@@ -2735,6 +2735,7 @@ PHP_METHOD(DateTime, __set_state)
2735
2735
dateobj = Z_PHPDATE_P (return_value );
2736
2736
if (!php_date_initialize_from_hash (& dateobj , myht )) {
2737
2737
zend_throw_error (NULL , "Invalid serialization data for DateTime object" );
2738
+ RETURN_THROWS ();
2738
2739
}
2739
2740
}
2740
2741
/* }}} */
@@ -2756,6 +2757,7 @@ PHP_METHOD(DateTimeImmutable, __set_state)
2756
2757
dateobj = Z_PHPDATE_P (return_value );
2757
2758
if (!php_date_initialize_from_hash (& dateobj , myht )) {
2758
2759
zend_throw_error (NULL , "Invalid serialization data for DateTimeImmutable object" );
2760
+ RETURN_THROWS ();
2759
2761
}
2760
2762
}
2761
2763
/* }}} */
@@ -2818,7 +2820,7 @@ static void restore_custom_datetime_properties(zval *object, HashTable *myht)
2818
2820
zval * prop_val ;
2819
2821
2820
2822
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 )) {
2822
2824
continue ;
2823
2825
}
2824
2826
add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
@@ -2842,6 +2844,7 @@ PHP_METHOD(DateTime, __unserialize)
2842
2844
2843
2845
if (!php_date_initialize_from_hash (& dateobj , myht )) {
2844
2846
zend_throw_error (NULL , "Invalid serialization data for DateTime object" );
2847
+ RETURN_THROWS ();
2845
2848
}
2846
2849
2847
2850
restore_custom_datetime_properties (object , myht );
@@ -2865,6 +2868,7 @@ PHP_METHOD(DateTimeImmutable, __unserialize)
2865
2868
2866
2869
if (!php_date_initialize_from_hash (& dateobj , myht )) {
2867
2870
zend_throw_error (NULL , "Invalid serialization data for DateTimeImmutable object" );
2871
+ RETURN_THROWS ();
2868
2872
}
2869
2873
2870
2874
restore_custom_datetime_properties (object , myht );
@@ -3918,7 +3922,7 @@ static void restore_custom_datetimezone_properties(zval *object, HashTable *myht
3918
3922
zval * prop_val ;
3919
3923
3920
3924
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 )) {
3922
3926
continue ;
3923
3927
}
3924
3928
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
4545
4549
zval * prop_val ;
4546
4550
4547
4551
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 )) {
4549
4553
continue ;
4550
4554
}
4551
4555
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)
5545
5549
zval * prop_val ;
5546
5550
5547
5551
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 )) {
5549
5553
continue ;
5550
5554
}
5551
5555
add_property_zval_ex (object , ZSTR_VAL (prop_name ), ZSTR_LEN (prop_name ), prop_val );
0 commit comments