From e07f1067606bacba159ea089ddb6767ce85955ef Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Sun, 9 Oct 2022 12:13:23 +0200 Subject: [PATCH] testevdev: Fix detection of word size The check for whether to use a 32- or 64-bit swap for an array of long values always took the 64-bit path, because wasn't included and therefore ULONG_MAX wasn't defined. Turn this into a runtime check, which a reasonable compiler will optimize into a constant. This fixes testevdev failures on 32-bit big-endian platforms such as hppa and older powerpc. Little-endian and/or 64-bit platforms are unaffected. [smcv: Added commit message] Bug-Debian: https://bugs.debian.org/1021310 Co-authored-by: Simon McVittie (cherry-picked from commit fb32effd15a52097de985558a14e3851681d0ae1) --- test/testevdev.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/test/testevdev.c b/test/testevdev.c index 938a9a504..fe9e367ee 100644 --- a/test/testevdev.c +++ b/test/testevdev.c @@ -935,12 +935,8 @@ static const GuessTest guess_tests[] = } }; -#if ULONG_MAX == 0xFFFFFFFFUL -# define SwapLongLE(X) SDL_SwapLE32(X) -#else - /* assume 64-bit */ -# define SwapLongLE(X) SDL_SwapLE64(X) -#endif +#define SwapLongLE(X) \ + ((sizeof(unsigned long) == 4) ? SDL_SwapLE32(X) : SDL_SwapLE64(X)) static int run_test(void)