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.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 527894d223..e8a457052e 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -3511,6 +3511,14 @@ zval *date_interval_read_property(zval *object, zval *member, int type TSRMLS_DC
obj = (php_interval_obj *)zend_objects_get_address(object TSRMLS_CC);
+ if (!obj->initialized) {
+ retval = (zend_get_std_object_handlers())->read_property(object, member, type TSRMLS_CC);
+ if (member == &tmp_member) {
+ zval_dtor(member);
+ }
+ return retval;
+ }
+
#define GET_VALUE_FROM_STRUCT(n,m) \
if (strcmp(Z_STRVAL_P(member), m) == 0) { \
value = obj->diff->n; \
@@ -3560,8 +3568,17 @@ void date_interval_write_property(zval *object, zval *member, zval *value TSRMLS
convert_to_string(&tmp_member);
member = &tmp_member;
}
+
obj = (php_interval_obj *)zend_objects_get_address(object TSRMLS_CC);
+ if (!obj->initialized) {
+ (zend_get_std_object_handlers())->write_property(object, member, value TSRMLS_CC);
+ if (member == &tmp_member) {
+ zval_dtor(member);
+ }
+ return;
+ }
+
#define SET_VALUE_FROM_STRUCT(n,m) \
if (strcmp(Z_STRVAL_P(member), m) == 0) { \
if (value->type != IS_LONG) { \