Having recently updated my computer to an athlon 64, this creates some issues for crossfire.
Specifically, on 32 bit, sizeof(long)=4, sizeof(long long)=8. On 64 bit, sizeof(long)=8, sizeof(long long)=8 This pretty much means the use of the 'long' type most anywhere in crossfire is incorrect, especially if that variable is getting used in a 32 bit context (example being if that long is being passed in to SockList_Addint() - that would be fine on 32 bit systems, not necessarily good on 64 bit) On while long and long long are the same size on my system, it does seem that gcc does care that %ld and %lld be used correctly. I think the fix there is to change the global.h so move the sizeof_long_long check before the sizeof_long check, so that on x86_64, a uint64 is still defined as a unsigned long long. The other more portable approach would be to define the format strings, eg: #define UINT64_FMT "%ulld" #define SINT64_FMT "%lld" (or %ld, or for windows, %I64 I think) - that would necessitate change everyplace that uses those long formats, but that may not be that many. Comments/thoughts/suggestions? _______________________________________________ crossfire mailing list [email protected] http://mailman.metalforge.org/mailman/listinfo/crossfire

