From 8c940a30ae7ed41298c81012f9542ada1e26eb72 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Sun, 27 Dec 2009 16:01:39 +0000 Subject: [PATCH] If the MSVCRT module is not found in the current binary, proceed to update system and local environments anyway, instead of aborting. (This will happen in a MSVC build with no or very few external libraries linked in) --- src/port/win32env.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/port/win32env.c b/src/port/win32env.c index 9a32387337..ac6250a5ac 100644 --- a/src/port/win32env.c +++ b/src/port/win32env.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/win32env.c,v 1.3 2009/06/11 14:49:15 momjian Exp $ + * $PostgreSQL: pgsql/src/port/win32env.c,v 1.4 2009/12/27 16:01:39 mha Exp $ * *------------------------------------------------------------------------- */ @@ -40,15 +40,20 @@ pgwin32_putenv(const char *envval) if (putenvFunc == NULL) { hmodule = GetModuleHandle("msvcrt"); - if (hmodule == NULL) - return 1; - putenvFunc = (PUTENVPROC) GetProcAddress(hmodule, "_putenv"); - if (putenvFunc == NULL) - return 1; + if (hmodule != NULL) + { + /* + * If the module is found, attempt to find the function. If not, that just + * means we're not linked with msvcrt, so fall through and make our other + * modifications anyway. + * Ignore any errors and update whatever we can, since callers don't + * check the return value anyway. + */ + putenvFunc = (PUTENVPROC) GetProcAddress(hmodule, "_putenv"); + if (putenvFunc != NULL) + putenvFunc(envval); + } } - ret = putenvFunc(envval); - if (ret != 0) - return ret; #endif /* _MSC_VER >= 1300 */ -- 2.11.0