From 0a1c8a90e23304220f6602e98aba5f891a1350b2 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sat, 6 Jan 2024 20:42:03 -0500 Subject: [PATCH] tests: Improve RNG compatibility with old compilers. Some C89 compilers with 32-bit longs won't automatically widen integer constants to (unsigned) long long in order to represent values that don't fit in an (unsigned) long, even if those compilers otherwise support 64-bit long long. The "ll" and "ull" suffixes seem to get things working. --- t/rng.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/t/rng.c b/t/rng.c index 2e2fc09..e442d99 100644 --- a/t/rng.c +++ b/t/rng.c @@ -32,7 +32,7 @@ # include "test.h" #endif -#define B64(x) ((x) & 0xffffffffffffffff) +#define B64(x) ((x) & 0xffffffffffffffffull) struct test_rng { unsigned long long state[4]; @@ -65,9 +65,9 @@ static unsigned long long splitmix64(unsigned long long *state) { unsigned long long z; - z = B64(*state += 0x9e3779b97f4a7c15); - z = B64((z ^ (z >> 30)) * 0xbf58476d1ce4e5b9); - z = B64((z ^ (z >> 27)) * 0x94d049bb133111eb); + z = B64(*state += 0x9e3779b97f4a7c15ull); + z = B64((z ^ (z >> 30)) * 0xbf58476d1ce4e5b9ull); + z = B64((z ^ (z >> 27)) * 0x94d049bb133111ebull); return z ^ (z >> 31); } -- 2.43.2