|
|
|
@ -1341,14 +1341,6 @@ PHP_FUNCTION(strtotime) |
|
|
|
timelib_update_ts(t, tzi); |
|
|
|
ts = timelib_date_to_int(t, &error2); |
|
|
|
|
|
|
|
/* if tz_info is not a copy, avoid double free */ |
|
|
|
if (now->tz_info != tzi && now->tz_info) { |
|
|
|
timelib_tzinfo_dtor(now->tz_info); |
|
|
|
} |
|
|
|
if (t->tz_info != tzi) { |
|
|
|
timelib_tzinfo_dtor(t->tz_info); |
|
|
|
} |
|
|
|
|
|
|
|
timelib_time_dtor(now); |
|
|
|
timelib_time_dtor(t); |
|
|
|
|
|
|
|
@ -1779,7 +1771,7 @@ static void date_period_it_current_data(zend_object_iterator *iter, zval ***data |
|
|
|
newdateobj->time->tz_abbr = strdup(it_time->tz_abbr); |
|
|
|
} |
|
|
|
if (it_time->tz_info) { |
|
|
|
newdateobj->time->tz_info = timelib_tzinfo_clone(it_time->tz_info); |
|
|
|
newdateobj->time->tz_info = it_time->tz_info; |
|
|
|
} |
|
|
|
|
|
|
|
*data = &iterator->current; |
|
|
|
@ -1966,7 +1958,7 @@ static zend_object_value date_object_clone_date(zval *this_ptr TSRMLS_DC) |
|
|
|
new_obj->time->tz_abbr = strdup(old_obj->time->tz_abbr); |
|
|
|
} |
|
|
|
if (old_obj->time->tz_info) { |
|
|
|
new_obj->time->tz_info = timelib_tzinfo_clone(old_obj->time->tz_info); |
|
|
|
new_obj->time->tz_info = old_obj->time->tz_info; |
|
|
|
} |
|
|
|
|
|
|
|
return new_ov; |
|
|
|
@ -2185,9 +2177,6 @@ static void date_object_free_storage_date(void *object TSRMLS_DC) |
|
|
|
php_date_obj *intern = (php_date_obj *)object; |
|
|
|
|
|
|
|
if (intern->time) { |
|
|
|
if (intern->time->tz_info) { |
|
|
|
timelib_tzinfo_dtor(intern->time->tz_info); |
|
|
|
} |
|
|
|
timelib_time_dtor(intern->time); |
|
|
|
} |
|
|
|
|
|
|
|
@ -2220,16 +2209,10 @@ static void date_object_free_storage_period(void *object TSRMLS_DC) |
|
|
|
php_period_obj *intern = (php_period_obj *)object; |
|
|
|
|
|
|
|
if (intern->start) { |
|
|
|
if (intern->start->tz_info) { |
|
|
|
timelib_tzinfo_dtor(intern->start->tz_info); |
|
|
|
} |
|
|
|
timelib_time_dtor(intern->start); |
|
|
|
} |
|
|
|
|
|
|
|
if (intern->end) { |
|
|
|
if (intern->end->tz_info) { |
|
|
|
timelib_tzinfo_dtor(intern->end->tz_info); |
|
|
|
} |
|
|
|
timelib_time_dtor(intern->end); |
|
|
|
} |
|
|
|
|
|
|
|
@ -2268,14 +2251,11 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int |
|
|
|
timelib_time *now; |
|
|
|
timelib_tzinfo *tzi; |
|
|
|
timelib_error_container *err = NULL; |
|
|
|
int free_tzi = 0, type = TIMELIB_ZONETYPE_ID, new_dst; |
|
|
|
int type = TIMELIB_ZONETYPE_ID, new_dst; |
|
|
|
char *new_abbr; |
|
|
|
timelib_sll new_offset; |
|
|
|
|
|
|
|
if (dateobj->time) { |
|
|
|
if (dateobj->time->tz_info) { |
|
|
|
timelib_tzinfo_dtor(dateobj->time->tz_info); |
|
|
|
} |
|
|
|
timelib_time_dtor(dateobj->time); |
|
|
|
} |
|
|
|
if (format) { |
|
|
|
@ -2303,8 +2283,7 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int |
|
|
|
tzobj = (php_timezone_obj *) zend_object_store_get_object(timezone_object TSRMLS_CC); |
|
|
|
switch (tzobj->type) { |
|
|
|
case TIMELIB_ZONETYPE_ID: |
|
|
|
tzi = timelib_tzinfo_clone(tzobj->tzi.tz); |
|
|
|
free_tzi = 1; |
|
|
|
tzi = tzobj->tzi.tz; |
|
|
|
break; |
|
|
|
case TIMELIB_ZONETYPE_OFFSET: |
|
|
|
new_offset = tzobj->tzi.utc_offset; |
|
|
|
@ -2317,8 +2296,7 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int |
|
|
|
} |
|
|
|
type = tzobj->type; |
|
|
|
} else if (dateobj->time->tz_info) { |
|
|
|
tzi = timelib_tzinfo_clone(dateobj->time->tz_info); |
|
|
|
free_tzi = 1; |
|
|
|
tzi = dateobj->time->tz_info; |
|
|
|
} else { |
|
|
|
tzi = get_timezone_info(TSRMLS_C); |
|
|
|
} |
|
|
|
@ -2345,12 +2323,6 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int |
|
|
|
|
|
|
|
dateobj->time->have_relative = 0; |
|
|
|
|
|
|
|
if (type == TIMELIB_ZONETYPE_ID && now->tz_info != tzi) { |
|
|
|
timelib_tzinfo_dtor(now->tz_info); |
|
|
|
} |
|
|
|
if (free_tzi) { |
|
|
|
timelib_tzinfo_dtor(tzi); |
|
|
|
} |
|
|
|
timelib_time_dtor(now); |
|
|
|
|
|
|
|
return 1; |
|
|
|
@ -2860,10 +2832,7 @@ PHP_FUNCTION(date_timezone_set) |
|
|
|
if (tzobj->type != TIMELIB_ZONETYPE_ID) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can only do this for zones with ID for now"); |
|
|
|
} |
|
|
|
if (dateobj->time->tz_info) { |
|
|
|
timelib_tzinfo_dtor(dateobj->time->tz_info); |
|
|
|
} |
|
|
|
timelib_set_timezone(dateobj->time, timelib_tzinfo_clone(tzobj->tzi.tz)); |
|
|
|
timelib_set_timezone(dateobj->time, tzobj->tzi.tz); |
|
|
|
timelib_unixtime2local(dateobj->time, dateobj->time->sse); |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
@ -3613,7 +3582,7 @@ PHP_METHOD(DatePeriod, __construct) |
|
|
|
clone->tz_abbr = strdup(dateobj->time->tz_abbr); |
|
|
|
} |
|
|
|
if (dateobj->time->tz_info) { |
|
|
|
clone->tz_info = timelib_tzinfo_clone(dateobj->time->tz_info); |
|
|
|
clone->tz_info = dateobj->time->tz_info; |
|
|
|
} |
|
|
|
dpobj->start = clone; |
|
|
|
|
|
|
|
@ -3629,7 +3598,7 @@ PHP_METHOD(DatePeriod, __construct) |
|
|
|
clone->tz_abbr = strdup(dateobj->time->tz_abbr); |
|
|
|
} |
|
|
|
if (dateobj->time->tz_info) { |
|
|
|
clone->tz_info = timelib_tzinfo_clone(dateobj->time->tz_info); |
|
|
|
clone->tz_info = dateobj->time->tz_info; |
|
|
|
} |
|
|
|
dpobj->end = clone; |
|
|
|
} |
|
|
|
|