pgsql: Fix "inconsistent DLL linkage" warning on Windows MSVC
Fix "inconsistent DLL linkage" warning on Windows MSVC
This warning was disabled in meson.build (warning 4273). If you
enable it, it looks like this:
../src/backend/utils/misc/ps_status.c(27): warning C4273: '__p__environ': inconsistent dll linkage
C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt\stdlib.h(1158): note: see previous definition of '__p__environ'
The declaration in ps_status.c was:
#if !defined(WIN32) || defined(_MSC_VER)
extern char **environ;
#endif
The declaration in the OS header file is:
_DCRTIMP char*** __cdecl __p__environ (void);
#define _environ (*__p__environ())
So it is evident that this could be problematic.
The old declaration was required by the old MSVCRT library, but we
don't support that anymore with MSVC.
To fix, disable the re-declaration in ps_status.c, and also in some
other places that use the same code pattern but didn't trigger the
warning.
Then we can also re-enable the warning (delete the disablement in
meson.build).
Reviewed-by: Bryan Green <dbryan.green@gmail.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Discussion: /messages/by-id/bf060644-47ff-441b-97cf-c685d0827757@eisentraut.org
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/a3ea5330fcf47390c8ab420bbf433a97a54505d6
Modified Files
--------------
meson.build | 1 -
src/backend/postmaster/postmaster.c | 2 +-
src/backend/utils/misc/ps_status.c | 2 +-
src/test/regress/regress.c | 2 +-
4 files changed, 3 insertions(+), 4 deletions(-)