From 69cfb62619ee3a5f2f58e41a9f14016876c6934d Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Wed, 15 Oct 2003 00:14:37 +0000 Subject: [PATCH] Fix bug #25825. tzset() was not called when resetting the TZ env var. In addition, fix a slight error (made by sniper!) which would trigger tzset() to be called for any env var beginning with TZ, and not just TZ itself. --- NEWS | 2 ++ ext/standard/basic_functions.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 6093cd5bab..b7517c550e 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ PHP 4 NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Oct 2003, Version 4.3.4RC2 +- Fixed bug #25825 (tzset() was not called to reset libc environment + on request shutdown). (Wez) - Fixed multibyte regex engine to properly handle ".*" pattern under POSIX compatible mode. (K.Kosako , Moriyoshi) - Fixed bug #25836 (last key of multi-dimensional array passed via GPC not diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 7f56d7b277..04140dc74a 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -950,6 +950,12 @@ static void php_putenv_destructor(putenv_entry *pe) } # endif } + /* don't forget to reset the various libc globals that + * we might have changed by an earlier call to tzset(). */ + if (!strncmp(pe->key, "TZ", pe->key_len)) { + tzset(); + } + efree(pe->putenv_string); efree(pe->key); } @@ -1347,7 +1353,7 @@ PHP_FUNCTION(putenv) 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 - if (!strncmp(pe.key, "TZ", 2)) { + if (!strncmp(pe.key, "TZ", pe.key_len)) { tzset(); } #endif -- 2.50.1