{
date_globals->default_timezone = NULL;
date_globals->timezone = NULL;
+ date_globals->tzcache = NULL;
}
/* }}} */
efree(DATEG(timezone));
}
DATEG(timezone) = NULL;
- zend_hash_init(&DATEG(tzcache), 4, NULL, _php_date_tzinfo_dtor, 0);
+ DATEG(tzcache) = NULL;
return SUCCESS;
}
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;
}
/* }}} */
{
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;
}
{
char *tz;
timelib_tzinfo *tzi;
-
+
tz = guess_timezone(DATE_TIMEZONEDB TSRMLS_CC);
tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB TSRMLS_CC);
if (! tzi) {