Hello, I took the last cvs snapshot of Crossfire Server, and I had a problem when I launch the compiled server : the "experience" table don't load at the first "big" (real 64 bit) level value (12 I think). After some tracing, I noticed it's because my "atoll" libc function is broken (the one with GLIBC_2.1.1 of a Mandrake/Redhat 6.0 Linux Distribution on x86). atoll in this version of the libc+distribution act on 32 bit values only : see example of this program : /************************************************************* /* fichier longlong.c */ /* Olivier Huet */ #include <stdio.h> #include <stdlib.h> #include <ctype.h> typedef long long sint64; sint64 myatoll(const char *ch) { sint64 res = 0; if (ch != NULL) { while (isdigit(*ch)) { res=res*10 + (*ch-'0'); ++ch; } } return res; } int main() { long long toto = 6283200000LL; const char *sToto = "6283200000"; long long interToto = atoll(sToto); long long myInterToto = myatoll(sToto); printf("sizeof(long long)=%i" ", toto=%lld" ", interToto=%lld" ", myInterToto=%lld\n" , sizeof(long long), toto, interToto, myInterToto ); return 0; } /************************************************************************/ --> When compiled and ran : gcc -Wall -o longlong longlong.c && longlong sizeof(long long)=8, toto=6283200000, interToto=1988232704, myInterToto=6283200000 atoll don't work with this. When replacing all "atoll" calls in the crossfire server with this "myatoll" function, it looks like it worked well (the server launched), but I didn't try with these real experience value (I don't have such powerfull players). So it would perhaps be a good idea to put something like that... (in porting.c ?), perhaps embraced with a define that is defined when there is this "buggy 64 bit parsing". Olivier. _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel