From 54aa6ccfc51414b94a2363be6302efb0f911b692 Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Sun, 4 Dec 2016 00:16:54 -0500 Subject: [PATCH] Make pgwin32_putenv() probe every known CRT, regardless of compiler. This extends to MinGW builds the provision for MSVC-built libraries to see putenv() effects. Doing so repairs, for example, the handling of the krb_server_keyfile parameter when linked with MSVC-built MIT Kerberos. Like the previous commit, no back-patch. --- src/port/win32env.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/port/win32env.c b/src/port/win32env.c index a491497152..214e5bee1e 100644 --- a/src/port/win32env.c +++ b/src/port/win32env.c @@ -21,7 +21,6 @@ pgwin32_putenv(const char *envval) { char *envcpy; char *cp; -#ifdef _MSC_VER typedef int (_cdecl * PUTENVPROC) (const char *); static const char *const modulenames[] = { "msvcrt", /* Visual Studio 6.0 / MinGW */ @@ -45,7 +44,6 @@ pgwin32_putenv(const char *envval) NULL }; int i; -#endif /* _MSC_VER */ /* * Update process environment, making this change visible to child @@ -88,7 +86,6 @@ pgwin32_putenv(const char *envval) * against. Addresses within these modules may become invalid the moment * we call FreeLibrary(), so don't cache them. */ -#ifdef _MSC_VER for (i = 0; modulenames[i]; i++) { HMODULE hmodule = NULL; @@ -104,9 +101,12 @@ pgwin32_putenv(const char *envval) FreeLibrary(hmodule); } } -#endif /* _MSC_VER */ - /* Finally, update our "own" cache */ + /* + * Finally, update our "own" cache. This is redundant with the loop + * above, except when PostgreSQL itself links to a CRT not listed above. + * Ideally, the loop does visit all possible CRTs, making this redundant. + */ return _putenv(envval); }