diff --git a/source/glest_game/main/main.cpp b/source/glest_game/main/main.cpp index f47157bf..d11cb67a 100644 --- a/source/glest_game/main/main.cpp +++ b/source/glest_game/main/main.cpp @@ -3079,7 +3079,6 @@ int glestMain(int argc, char** argv) { printf("%s %s",extractFileFromDirectoryPath(argv[0]).c_str(),getNetworkPlatformFreeVersionString().c_str()); printf("\nCompiled using: %s on: %s platform: %s endianness: %s",getCompilerNameString().c_str(),getCompileDateTime().c_str(),getPlatformNameString().c_str(),(Shared::PlatformByteOrder::isBigEndian() == true ? "big" : "little")); - printf("\n\nData type sizes int8 = %zu int16 = %zu int32 = %zu int64 = %zu\n\n",sizeof(int8),sizeof(int16),sizeof(int32),sizeof(int64)); Config::getInstance().setBool("DebugNetworkPackets",true,true); diff --git a/source/glest_game/network/network_protocol.cpp b/source/glest_game/network/network_protocol.cpp index 11642d18..0600bb26 100644 --- a/source/glest_game/network/network_protocol.cpp +++ b/source/glest_game/network/network_protocol.cpp @@ -17,8 +17,11 @@ #include "leak_dumper.h" using namespace Shared::Platform; + namespace Glest{ namespace Game{ +#pragma pack(push, 1) + // macros for packing floats and doubles: #define pack754_16(f) (pack754((f), 16, 5)) #define pack754_32(f) (pack754((f), 32, 8)) @@ -270,7 +273,7 @@ unsigned int pack(unsigned char *buf, const char *format, ...) { case 'c': // 8-bit size += 1; c = (int8)va_arg(ap, int); // promoted - *buf++ = reinterpret_cast(c); + *buf++ = (unsigned char)c; printf("pack int8 = %d [%X] c = %d [%X] buf pos = %d\n",*(buf-1),*(buf-1),c,c,(buf - bufStart)); break; @@ -278,7 +281,7 @@ unsigned int pack(unsigned char *buf, const char *format, ...) { case 'C': // 8-bit unsigned size += 1; C = (uint8)va_arg(ap, unsigned int); // promoted - *buf++ = reinterpret_cast(C); + *buf++ = (unsigned char)C; printf("pack uint8 = %u [%X] C = %u [%X] buf pos = %d\n",*(buf-1),*(buf-1),C,C,(buf - bufStart)); break; @@ -286,7 +289,7 @@ unsigned int pack(unsigned char *buf, const char *format, ...) { case 'h': // 16-bit size += 2; h = (int16)va_arg(ap, int); - packi16(buf, reinterpret_cast(h)); + packi16(buf, h); buf += 2; printf("pack int16 = %d [%X] h = %d [%X] buf pos = %d\n",*(buf-2),*(buf-2),h,h,(buf - bufStart)); @@ -304,7 +307,7 @@ unsigned int pack(unsigned char *buf, const char *format, ...) { case 'l': // 32-bit size += 4; l = va_arg(ap, int32); - packi32(buf, reinterpret_cast(l)); + packi32(buf, l); buf += 4; printf("pack int32 = %d [%X] l = %d [%X] buf pos = %d\n",*(buf-4),*(buf-4),l,l,(buf - bufStart)); @@ -322,7 +325,7 @@ unsigned int pack(unsigned char *buf, const char *format, ...) { case 'q': // 64-bit size += 8; q = va_arg(ap, int64); - packi64(buf, reinterpret_cast(q)); + packi64(buf, q); buf += 8; printf("pack int64 = %ld [%X] q = %ld [%lX] buf pos = %d\n",*(buf-8),*(buf-8),q,q,(buf - bufStart)); @@ -446,7 +449,7 @@ unsigned int unpack(unsigned char *buf, const char *format, ...) { // else { // *c = -1 - (unsigned char)(0xffu - *buf); // } - *c = reinterpret_cast(*buf++); + *c = (int8)*buf++; size += 1; printf("unpack int8 = %d [%X] c = %d [%X] buf pos = %d\n",*(buf-1),*(buf-1),*c,*c,(buf - bufStart)); @@ -454,7 +457,7 @@ unsigned int unpack(unsigned char *buf, const char *format, ...) { case 'C': // 8-bit unsigned C = va_arg(ap, uint8*); - *C = reinterpret_cast(*buf++); + *C = (uint8)*buf++; size += 1; printf("unpack uint8 = %u [%X] C = %u [%X] buf pos = %d\n",*(buf-1),*(buf-1),*C,*C,(buf - bufStart)); @@ -569,5 +572,6 @@ unsigned int unpack(unsigned char *buf, const char *format, ...) { return size; } +#pragma pack(pop) }}