From: Anatol Belski Date: Fri, 21 Nov 2014 09:25:18 +0000 (+0100) Subject: Merge branch 'PHP-5.6' X-Git-Tag: PRE_NATIVE_TLS_MERGE~106^2~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bcd9c6b25657ee8dfcf7a8975651742ea8a1f280;p=php Merge branch 'PHP-5.6' * PHP-5.6: added test for things done so far for bug #66265 partially fixed bug #66265 forked bug67052.phpt for Windows --- bcd9c6b25657ee8dfcf7a8975651742ea8a1f280 diff --cc ext/standard/basic_functions.c index a168069cfb,694ce5be27..f6b9f93fba --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@@ -4114,16 -4108,20 +4114,20 @@@ PHP_FUNCTION(putenv if (putenv(pe.putenv_string) == 0) { /* success */ # else error_code = SetEnvironmentVariable(pe.key, value); - # if _MSC_VER < 1500 - /* Yet another VC6 bug, unset may return env not found */ - if (error_code != 0 || - (error_code == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND)) { - # else - if (error_code != 0) { /* success */ - # endif + + if (error_code != 0 + # ifndef ZTS + /* We need both SetEnvironmentVariable and _putenv here as some + dependency lib could use either way to read the environment. + Obviously the CRT version will be useful more often. But + generally, doing both brings us on the safe track at least + in NTS build. */ + && _putenv(pe.putenv_string) == 0 + # endif + ) { /* success */ # endif #endif - zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len + 1, (void **) &pe, sizeof(putenv_entry), NULL); + zend_hash_str_add_mem(&BG(putenv_ht), pe.key, pe.key_len, &pe, sizeof(putenv_entry)); #ifdef HAVE_TZSET if (!strncmp(pe.key, "TZ", pe.key_len)) { tzset();