Stefan Dösinger stefan@codeweavers.com writes:
It had a level of indirection mistake, but yes, the following patch fixes the new warnings:
I think it's gcc's fault, or the code relying on something that the C spec doesn't guarantee. It seems to me that gcc doesn't pack the bitfields properly as we hoped, and leaves padding bytes in between that are left uninitialized. The hash function then treats the structure as a binary blob.
gcc is perfectly correct, if you don't want padding space then your bitfields have to add up to the size of an integer.