stas            Sun May 31 21:29:54 2009 UTC

  Modified files:              
    /php-src/ext/date   php_date.c php_date.h 
  Log:
  fix for #48247
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.c?r1=1.235&r2=1.236&diff_format=u
Index: php-src/ext/date/php_date.c
diff -u php-src/ext/date/php_date.c:1.235 php-src/ext/date/php_date.c:1.236
--- php-src/ext/date/php_date.c:1.235   Wed May 20 08:18:07 2009
+++ php-src/ext/date/php_date.c Sun May 31 21:29:54 2009
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_date.c,v 1.235 2009/05/20 08:18:07 kalle Exp $ */
+/* $Id: php_date.c,v 1.236 2009/05/31 21:29:54 stas Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -597,6 +597,7 @@
 {
        date_globals->default_timezone = NULL;
        date_globals->timezone = NULL;
+       date_globals->tzcache = NULL;
 }
 /* }}} */
 
@@ -615,7 +616,7 @@
                efree(DATEG(timezone));
        }
        DATEG(timezone) = NULL;
-       zend_hash_init(&DATEG(tzcache), 4, NULL, _php_date_tzinfo_dtor, 0);
+       DATEG(tzcache) = NULL;
 
        return SUCCESS;
 }
@@ -628,8 +629,11 @@
                efree(DATEG(timezone));
        }
        DATEG(timezone) = NULL;
-       zend_hash_destroy(&DATEG(tzcache));
-
+       if(DATEG(tzcache)) {
+               zend_hash_destroy(DATEG(tzcache));
+               FREE_HASHTABLE(DATEG(tzcache));
+               DATEG(tzcache) = NULL;
+       }
        return SUCCESS;
 }
 /* }}} */
@@ -811,13 +815,18 @@
 {
        timelib_tzinfo *tzi, **ptzi;
 
-       if (zend_hash_find(&DATEG(tzcache), formal_tzname, 
strlen(formal_tzname) + 1, (void **) &ptzi) == SUCCESS) {
+       if(!DATEG(tzcache)) {
+               ALLOC_HASHTABLE(DATEG(tzcache));
+               zend_hash_init(DATEG(tzcache), 4, NULL, _php_date_tzinfo_dtor, 
0);
+       }
+
+       if (zend_hash_find(DATEG(tzcache), formal_tzname, strlen(formal_tzname) 
+ 1, (void **) &ptzi) == SUCCESS) {
                return *ptzi;
        }
 
        tzi = timelib_parse_tzfile(formal_tzname, tzdb);
        if (tzi) {
-               zend_hash_add(&DATEG(tzcache), formal_tzname, 
strlen(formal_tzname) + 1, (void *) &tzi, sizeof(timelib_tzinfo*), NULL);
+               zend_hash_add(DATEG(tzcache), formal_tzname, 
strlen(formal_tzname) + 1, (void *) &tzi, sizeof(timelib_tzinfo*), NULL);
        }
        return tzi;
 }
@@ -906,7 +915,7 @@
 {
        char *tz;
        timelib_tzinfo *tzi;
-       
+
        tz = guess_timezone(DATE_TIMEZONEDB TSRMLS_CC);
        tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB TSRMLS_CC);
        if (! tzi) {
http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.h?r1=1.45&r2=1.46&diff_format=u
Index: php-src/ext/date/php_date.h
diff -u php-src/ext/date/php_date.h:1.45 php-src/ext/date/php_date.h:1.46
--- php-src/ext/date/php_date.h:1.45    Sun May  3 19:57:35 2009
+++ php-src/ext/date/php_date.h Sun May 31 21:29:54 2009
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_date.h,v 1.45 2009/05/03 19:57:35 derick Exp $ */
+/* $Id: php_date.h,v 1.46 2009/05/31 21:29:54 stas Exp $ */
 
 #ifndef PHP_DATE_H
 #define PHP_DATE_H
@@ -153,7 +153,7 @@
 ZEND_BEGIN_MODULE_GLOBALS(date)
        char      *default_timezone;
        char      *timezone;
-       HashTable  tzcache;
+       HashTable *tzcache;
        timelib_error_container *last_errors;
 ZEND_END_MODULE_GLOBALS(date)
 



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

Reply via email to