diff -r 83cc372c05d9 -r 3883b5dc600c misc/libphysfs/physfs_internal.h --- a/misc/libphysfs/physfs_internal.h Mon Jun 03 23:09:06 2013 +0200 +++ b/misc/libphysfs/physfs_internal.h Mon Jun 03 23:21:29 2013 +0200 @@ -322,8 +322,13 @@ #define __PHYSFS_ARRAYLEN(x) ( (sizeof (x)) / (sizeof (x[0])) ) #ifdef PHYSFS_NO_64BIT_SUPPORT -#define __PHYSFS_SI64(x) ((PHYSFS_sint64) (x)) -#define __PHYSFS_UI64(x) ((PHYSFS_uint64) (x)) +/* if a 32bit compiler sees something with this many bits: 0xFFFFFFFFFFFFFFFF + * it doesn't know if it really means 64bit or if it's supposed to squeeze + * it into 32 bit, so without the ULL it squeezes the number to 32 bit, + * with it it forces it to be 64bits + */ +#define __PHYSFS_SI64(x) ((PHYSFS_sint64) (x##LL)) +#define __PHYSFS_UI64(x) ((PHYSFS_uint64) (x##ULL)) #elif (defined __GNUC__) #define __PHYSFS_SI64(x) x##LL #define __PHYSFS_UI64(x) x##ULL