1
0
mirror of https://github.com/php/php-src.git synced 2026-04-05 23:23:03 +02:00

Merge branch 'PHP-5.5'

This commit is contained in:
Xinchen Hui
2013-03-29 23:46:24 +08:00
2 changed files with 27 additions and 5 deletions

View File

@@ -128,7 +128,7 @@ static char** save_argv;
* This holds the 'locally' allocated environ from the save_ps_args method.
* This is subsequently free'd at exit.
*/
static char** new_environ;
static char** frozen_environ, **new_environ;
/*
* Call this method early, before any code has used the original argv passed in
@@ -182,7 +182,8 @@ char** save_ps_args(int argc, char** argv)
* move the environment out of the way
*/
new_environ = (char **) malloc((i + 1) * sizeof(char *));
if (!new_environ)
frozen_environ = (char **) malloc((i + 1) * sizeof(char *));
if (!new_environ || !frozen_environ)
goto clobber_error;
for (i = 0; environ[i] != NULL; i++)
{
@@ -192,6 +193,7 @@ char** save_ps_args(int argc, char** argv)
}
new_environ[i] = NULL;
environ = new_environ;
memcpy((char *)frozen_environ, (char *)new_environ, sizeof(char *) * (i + 1));
}
#endif /* PS_USE_CLOBBER_ARGV */
@@ -409,9 +411,9 @@ void cleanup_ps_args(char **argv)
#ifdef PS_USE_CLOBBER_ARGV
{
int i;
for (i = 0; new_environ[i] != NULL; i++)
free(new_environ[i]);
free(new_environ);
for (i = 0; frozen_environ[i] != NULL; i++)
free(frozen_environ[i]);
free(frozen_environ);
}
#endif /* PS_USE_CLOBBER_ARGV */

View File

@@ -0,0 +1,20 @@
--TEST--
Bug #64544 (Valgrind warnings after using putenv)
--SKIPIF--
<?php
if (substr(PHP_OS, 0, 3) == "WIN") {
die("skip non windows test");
}
?>
--FILE--
<?php
putenv("HOME=/tmp");
var_dump(getenv("HOME"));
putenv("FOO=BAR");
var_dump(getenv("FOO"));
?>
--EXPECTF--
string(4) "/tmp"
string(3) "BAR"