Files
glib/glib
Simon McVittie de7abf54c7 ghash: Correctly retrieve low 32 bits of 64-bit values
Dereferencing a pointer to a 64-bit object as though it was a 32-bit
object is the same as taking the least significant 32 bits on a
little-endian machine, but on a big-endian machine it is the same as
taking the *most* significant 32 bits, which would result in these hash
functions always hashing to zero. The /hash/int64/collisions and
/hash/double/collisions test-cases in glib/tests/hash.c detect this
and fail.

Instead, fetch the whole 64-bit quantity and do the bit-manipulation
to xor the more significant half with the less significant half in an
architecture-neutral way.

Fixes: dd1f4f70 "Optimize g_double_hash implementation"
Fixes: c1af4b2b "Optional optimization for `g_int64_hash`"
Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/2787
Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-10-24 10:46:57 +01:00
..
2022-06-27 17:53:25 -04:00
2022-05-23 09:19:45 -04:00
2022-06-29 16:05:09 +02:00
2022-06-23 10:47:22 +01:00
2022-06-23 10:47:22 +01:00
2022-06-23 10:47:22 +01:00
2020-11-17 15:50:07 +00:00
2018-01-04 22:19:30 +01:00
2022-07-25 22:30:22 +01:00
2021-09-21 09:41:29 +00:00
2021-11-18 14:32:09 +00:00
2022-09-15 03:43:04 +02:00
2022-10-05 06:47:26 +00:00