wez             Thu Dec  4 17:38:23 2003 EDT

  Modified files:              
    /php-src/ext/standard       basic_functions.c 
  Log:
  Work around a bug in putenv() in the VS.Net C run time library (MSVCRT71) where it 
will double free a string.
  
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.644 
php-src/ext/standard/basic_functions.c:1.645
--- php-src/ext/standard/basic_functions.c:1.644        Sat Nov 29 16:46:47 2003
+++ php-src/ext/standard/basic_functions.c      Thu Dec  4 17:38:22 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: basic_functions.c,v 1.644 2003/11/29 21:46:47 wez Exp $ */
+/* $Id: basic_functions.c,v 1.645 2003/12/04 22:38:22 wez Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -1448,6 +1448,14 @@
                        }
                }
 
+#if _MSC_VER >= 1300
+               /* VS.Net has a bug in putenv() when setting a variable that
+                * is already set; if the SetEnvironmentVariable() API call
+                * fails, the Crt will double free() a string.
+                * We try to avoid this by setting our own value first */
+               SetEnvironmentVariable(pe.key, "bugbug");
+#endif
+               
                if (putenv(pe.putenv_string) == 0) {    /* success */
                        zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len+1, (void **) 
&pe, sizeof(putenv_entry), NULL);
 #ifdef HAVE_TZSET

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to