Am 12.03.19 um 18:34 schrieb Eric Anholt: > Ilia Mirkin <imir...@alum.mit.edu> writes: > >> I believe the distinction here is between initializing all the fields >> and using them individually (thus leaving the padding uninitialized), >> vs using the fields to create a structure to hash as a sequence of >> bytes. For the latter, you really need all the memory initialized, not >> just the "valid" parts of the structure. In at least my mind, it's >> fairly well-established that compilers don't always initialize all of >> a structure's underlying bytes, but I also don't have a specific >> instance of that situation I can point to. >> >> For most usage, foo = {0} is fine since you're not hashing the bytes >> but rather accessing the fields directly. But for hashing, you really >> want all the bits initialized. > > Gah. The commit message even said it was about padding, and I failed to > read. Sorry for the noise, this does seem right.
The alternative is to use explicit padding in the struct, so that structure initialization is guaranteed to initialize everything to zero. I believe some places still do that too, but it's not very nice neither (can easily make mistakes there). So - pick your poison... Roland > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-dev&data=02%7C01%7Csroland%40vmware.com%7Cd6e706866d844beb84a808d6a7110f53%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C636880089068822714&sdata=AENcqpYCV4d4DJW3q4Bkg9GXIEyU6Au8Yccuthd7Mbk%3D&reserved=0 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev