@@ -2706,6 +2706,7 @@ PHP_METHOD(DateTime, __set_state)
27062706 dateobj = Z_PHPDATE_P (return_value );
27072707 if (!php_date_initialize_from_hash (& dateobj , myht )) {
27082708 zend_throw_error (NULL , "Invalid serialization data for DateTime object" );
2709+ RETURN_THROWS ();
27092710 }
27102711}
27112712/* }}} */
@@ -2727,6 +2728,7 @@ PHP_METHOD(DateTimeImmutable, __set_state)
27272728 dateobj = Z_PHPDATE_P (return_value );
27282729 if (!php_date_initialize_from_hash (& dateobj , myht )) {
27292730 zend_throw_error (NULL , "Invalid serialization data for DateTimeImmutable object" );
2731+ RETURN_THROWS ();
27302732 }
27312733}
27322734/* }}} */
@@ -2789,7 +2791,7 @@ static void restore_custom_datetime_properties(zval *object, HashTable *myht)
27892791 zval * prop_val ;
27902792
27912793 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
2792- if (date_time_is_internal_property (prop_name )) {
2794+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_time_is_internal_property (prop_name )) {
27932795 continue ;
27942796 }
27952797 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -2813,6 +2815,7 @@ PHP_METHOD(DateTime, __unserialize)
28132815
28142816 if (!php_date_initialize_from_hash (& dateobj , myht )) {
28152817 zend_throw_error (NULL , "Invalid serialization data for DateTime object" );
2818+ RETURN_THROWS ();
28162819 }
28172820
28182821 restore_custom_datetime_properties (object , myht );
@@ -2836,6 +2839,7 @@ PHP_METHOD(DateTimeImmutable, __unserialize)
28362839
28372840 if (!php_date_initialize_from_hash (& dateobj , myht )) {
28382841 zend_throw_error (NULL , "Invalid serialization data for DateTimeImmutable object" );
2842+ RETURN_THROWS ();
28392843 }
28402844
28412845 restore_custom_datetime_properties (object , myht );
@@ -3821,7 +3825,7 @@ static void restore_custom_datetimezone_properties(zval *object, HashTable *myht
38213825 zval * prop_val ;
38223826
38233827 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
3824- if (date_timezone_is_internal_property (prop_name )) {
3828+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_timezone_is_internal_property (prop_name )) {
38253829 continue ;
38263830 }
38273831 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -4449,7 +4453,7 @@ static void restore_custom_dateinterval_properties(zval *object, HashTable *myht
44494453 zval * prop_val ;
44504454
44514455 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
4452- if (date_interval_is_internal_property (prop_name )) {
4456+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_interval_is_internal_property (prop_name )) {
44534457 continue ;
44544458 }
44554459 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -5411,7 +5415,7 @@ static void restore_custom_dateperiod_properties(zval *object, HashTable *myht)
54115415 zval * prop_val ;
54125416
54135417 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL (myht , prop_name , prop_val ) {
5414- if (date_period_is_internal_property (prop_name )) {
5418+ if (! prop_name || ( Z_TYPE_P ( prop_val ) == IS_REFERENCE ) || date_period_is_internal_property (prop_name )) {
54155419 continue ;
54165420 }
54175421 add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
0 commit comments