aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/port/win32env.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/port/win32env.c b/src/port/win32env.c
index 7533549608c..36888286b7f 100644
--- a/src/port/win32env.c
+++ b/src/port/win32env.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/port/win32env.c,v 1.1 2009/01/21 10:30:02 mha Exp $
+ * $PostgreSQL: pgsql/src/port/win32env.c,v 1.2 2009/02/12 12:53:34 mha Exp $
*
*-------------------------------------------------------------------------
*/
@@ -64,12 +64,18 @@ pgwin32_putenv(const char *envval)
return -1;
*cp = '\0';
cp++;
- if (strlen(cp) == 0)
- cp = NULL;
- if (!SetEnvironmentVariable(envcpy, cp))
+ if (strlen(cp))
{
- free(envcpy);
- return -1;
+ /*
+ * Only call SetEnvironmentVariable() when we are adding a variable,
+ * not when removing it. Calling it on both crashes on at least certain
+ * versions of MingW.
+ */
+ if (!SetEnvironmentVariable(envcpy, cp))
+ {
+ free(envcpy);
+ return -1;
+ }
}
free(envcpy);