@@ -2735,6 +2735,7 @@ PHP_METHOD(DateTime, __set_state)
27352735 dateobj = Z_PHPDATE_P (return_value );
27362736 if (!php_date_initialize_from_hash (& dateobj , myht )) {
27372737 zend_throw_error (NULL , "Invalid serialization data for DateTime object" );
2738+ RETURN_THROWS ();
27382739 }
27392740}
27402741/* }}} */
@@ -2756,6 +2757,7 @@ PHP_METHOD(DateTimeImmutable, __set_state)
27562757 dateobj = Z_PHPDATE_P (return_value );
27572758 if (!php_date_initialize_from_hash (& dateobj , myht )) {
27582759 zend_throw_error (NULL , "Invalid serialization data for DateTimeImmutable object" );
2760+ RETURN_THROWS ();
27592761 }
27602762}
27612763/* }}} */
@@ -2818,7 +2820,7 @@ static void restore_custom_datetime_properties(zval *object, HashTable *myht)
28182820 zval * prop_val ;
28192821
28202822 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
2821- if (date_time_is_internal_property (prop_name )) {
2823+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_time_is_internal_property (prop_name )) {
28222824 continue ;
28232825 }
28242826 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -2842,6 +2844,7 @@ PHP_METHOD(DateTime, __unserialize)
28422844
28432845 if (!php_date_initialize_from_hash (& dateobj , myht )) {
28442846 zend_throw_error (NULL , "Invalid serialization data for DateTime object" );
2847+ RETURN_THROWS ();
28452848 }
28462849
28472850 restore_custom_datetime_properties (object , myht );
@@ -2865,6 +2868,7 @@ PHP_METHOD(DateTimeImmutable, __unserialize)
28652868
28662869 if (!php_date_initialize_from_hash (& dateobj , myht )) {
28672870 zend_throw_error (NULL , "Invalid serialization data for DateTimeImmutable object" );
2871+ RETURN_THROWS ();
28682872 }
28692873
28702874 restore_custom_datetime_properties (object , myht );
@@ -3918,7 +3922,7 @@ static void restore_custom_datetimezone_properties(zval *object, HashTable *myht
39183922 zval * prop_val ;
39193923
39203924 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
3921- if (date_timezone_is_internal_property (prop_name )) {
3925+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_timezone_is_internal_property (prop_name )) {
39223926 continue ;
39233927 }
39243928 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -4545,7 +4549,7 @@ static void restore_custom_dateinterval_properties(zval *object, HashTable *myht
45454549 zval * prop_val ;
45464550
45474551 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
4548- if (date_interval_is_internal_property (prop_name )) {
4552+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_interval_is_internal_property (prop_name )) {
45494553 continue ;
45504554 }
45514555 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -5545,7 +5549,7 @@ static void restore_custom_dateperiod_properties(zval *object, HashTable *myht)
55455549 zval * prop_val ;
55465550
55475551 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
5548- if (date_period_is_internal_property (prop_name )) {
5552+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_period_is_internal_property (prop_name )) {
55495553 continue ;
55505554 }
55515555 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
0 commit comments