Believe we got this fixed.
In common/shareddb.cpp: SaveInventory -
The query builder sprintf format references %lu, long unsigned integers. Above this code the array of augments is init'd as uint32. On a 32-bit system this is correct, but on a 64-bit system it appears to be giving overflows, resulting in the database getting filled with the max value for the column (default is 0 so it's not just spewing nulls).
Casting the augment item IDs to (unsigned long) in the MakeAnyLenString query build results in correct behavior. We may need to look further into our defined basic datatypes and more closely at the compiler warnings (this was one of them) to ensure the trunk operates on both architectures equally.
|