summaryrefslogtreecommitdiff
path: root/ext/date/php_date.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/date/php_date.c')
-rw-r--r--ext/date/php_date.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 2fe78a0e69..f494d6cfaf 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2013,6 +2013,7 @@ static void date_register_classes(void) /* {{{ */
date_object_handlers_immutable.clone_obj = date_object_clone_date;
date_object_handlers_immutable.compare_objects = date_object_compare_date;
date_object_handlers_immutable.get_properties = date_object_get_properties;
+ date_object_handlers_immutable.get_gc = date_object_get_gc;
zend_class_implements(date_ce_immutable, 1, date_ce_interface);
INIT_CLASS_ENTRY(ce_timezone, "DateTimeZone", date_funcs_timezone);
@@ -2170,7 +2171,7 @@ static HashTable *date_object_get_properties(zval *object) /* {{{ */
props = zend_std_get_properties(object);
- if (!dateobj->time || GC_G(gc_active)) {
+ if (!dateobj->time) {
return props;
}
@@ -4270,6 +4271,10 @@ static zend_string *date_interval_format(char *format, size_t format_len, timeli
smart_str_0(&string);
+ if (string.s == NULL) {
+ return ZSTR_EMPTY_ALLOC();
+ }
+
return string.s;
}
/* }}} */
@@ -4447,6 +4452,10 @@ PHP_METHOD(DatePeriod, getEndDate)
dpobj = Z_PHPPERIOD_P(getThis());
+ if (!dpobj->end) {
+ return;
+ }
+
php_date_instantiate(dpobj->start_ce, return_value);
dateobj = Z_PHPDATE_P(return_value);
dateobj->time = timelib_time_ctor();
@@ -4843,7 +4852,7 @@ static HashTable *date_object_get_properties_period(zval *object) /* {{{ */
props = zend_std_get_properties(object);
- if (!period_obj->start || GC_G(gc_active)) {
+ if (!period_obj->start) {
return props;
}