Fix MinGW %d vs %lu warnings in back branches.
authorThomas Munro <tmunro@postgresql.org>
Thu, 28 Nov 2024 21:58:01 +0000 (10:58 +1300)
committerThomas Munro <tmunro@postgresql.org>
Thu, 28 Nov 2024 22:09:18 +0000 (11:09 +1300)
Commit 352f6f2d used %d instead of %lu to format DWORD (unsigned long)
with psprintf().  The _WIN32_WINNT value recently changed for MinGW in
REL_15_STABLE (commit d700e8d7), so the code was suddenly being
compiled, with warnings from gcc.

The warnings were already fixed in 16+ by commits 495ed0ef and a9bc04b2
after the _WIN32_WINNT value was increase there.  14 and 13 didn't warn
because they still use a lower value for MinGW, and supported versions
of Visual Studio should compile the code in all live branches but don't
check our format string.

The change doesn't affect the result: sizeof(int) == sizeof(long) on
this platform, and the values are computed with expressions that cannot
exceed INT_MAX so were never interpreted as negative.

Back-patch the formatting change from those commits into 13-15.  This
should turn CI's 15 branch green again and stop fairywren from warning
about that on 15.

Reported-by: Andres Freund <andres@anarazel.de>
Reported-by: Peter Eisentraut <peter@eisentraut.org>
Discussion: https://postgr.es/m/t2vjrcb3bloxf5qqvxjst6r7lvrefqyecxgt2koy5ho5b5glr2%40yuupmm6whgob

src/backend/utils/adt/pg_locale.c

index b81b9442d858dc291c0a86c41e81359ada340a04..bf523c18249b67eb30d95e23b3b05ed72f155796 100644 (file)
@@ -1718,7 +1718,7 @@ get_collation_actual_version(char collprovider, const char *collcollate)
                            collcollate,
                            GetLastError())));
        }
-       collversion = psprintf("%d.%d,%d.%d",
+       collversion = psprintf("%lu.%lu,%lu.%lu",
                               (version.dwNLSVersion >> 8) & 0xFFFF,
                               version.dwNLSVersion & 0xFF,
                               (version.dwDefinedVersion >> 8) & 0xFFFF,