Commit 54aa6ccf authored by Noah Misch's avatar Noah Misch

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.
parent 202dbdbe
......@@ -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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment