summaryrefslogtreecommitdiff
path: root/src/port/win32env.c
diff options
context:
space:
mode:
authorMagnus Hagander2009-12-27 16:01:39 +0000
committerMagnus Hagander2009-12-27 16:01:39 +0000
commit8c940a30ae7ed41298c81012f9542ada1e26eb72 (patch)
tree2bde237e76efb75381e5e1997afc0b1f07924033 /src/port/win32env.c
parente5b457c2ac0f5b843f53bd5719a620e7fcc4961d (diff)
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)
Diffstat (limited to 'src/port/win32env.c')
-rw-r--r--src/port/win32env.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/port/win32env.c b/src/port/win32env.c
index 9a32387337e..ac6250a5ac6 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 */