Index: common/packets.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.c,v retrieving revision 1.33 diff -u -r1.33 packets.c --- packets.c 1999/02/28 20:20:48 1.33 +++ packets.c 1999/03/03 03:12:01 @@ -192,8 +192,9 @@ unsigned char *get_int16(unsigned char *buffer, int *val) { if(val) { - int myval=(*buffer)+((*(buffer+1))<<8); - *val=myval; + unsigned short x; + memcpy(&x,buffer,2); + *val=ntohs(x); } return buffer+2; } @@ -204,9 +205,9 @@ **************************************************************************/ unsigned char *put_int16(unsigned char *buffer, int val) { - *buffer++=val&0xff; - *buffer++=(val&0xff00)>>8; - return buffer; + unsigned short x = htons(val); + memcpy(buffer,&x,2); + return buffer+2; } @@ -216,25 +217,22 @@ unsigned char *get_int32(unsigned char *buffer, int *val) { if(val) { - int myval=(*buffer)+((*(buffer+1))<<8)+ - ((*(buffer+2))<<16)+((*(buffer+3))<<24); - *val=myval; + unsigned long x; + memcpy(&x,buffer,4); + *val=ntohl(x); } return buffer+4; } - /************************************************************************** ... **************************************************************************/ unsigned char *put_int32(unsigned char *buffer, int val) { - *buffer++=val&0xff; - *buffer++=(val&0xff00)>>8; - *buffer++=(val&0xff0000)>>16; - *buffer++=(val&0xff000000)>>24; - return buffer; + unsigned long x = htonl(val); + memcpy(buffer,&x,4); + return buffer+4; } /**************************************************************************