summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander2009-12-27 16:01:39 +0000
committerMagnus Hagander2009-12-27 16:01:39 +0000
commit8c940a30ae7ed41298c81012f9542ada1e26eb72 (patch)
tree2bde237e76efb75381e5e1997afc0b1f07924033
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)
-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 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 */