summaryrefslogtreecommitdiff
path: root/src/port/win32env.c
diff options
context:
space:
mode:
authorNoah Misch2016-12-04 05:16:54 +0000
committerNoah Misch2016-12-04 05:16:54 +0000
commit54aa6ccfc51414b94a2363be6302efb0f911b692 (patch)
tree99df03d90c3f3ac4f2fcaaab96197a7d93fb38bb /src/port/win32env.c
parent202dbdbe41e1b1085a4d69c96bca9a52e634b196 (diff)
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.
Diffstat (limited to 'src/port/win32env.c')
-rw-r--r--src/port/win32env.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/port/win32env.c b/src/port/win32env.c
index a491497152c..214e5bee1ee 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);
}