@@ -2807,7 +2807,7 @@ static zend_always_inline bool verify_readonly_and_avis(zval *property_val, zend
28072807{
28082808 if (UNEXPECTED (info -> flags & (ZEND_ACC_READONLY |ZEND_ACC_PPP_SET_MASK ))) {
28092809 if ((info -> flags & ZEND_ACC_READONLY )
2810- && (!zend_readonly_property_is_reinitable (property_val )
2810+ && (!zend_readonly_property_is_reinitable_for_context (property_val , info )
28112811 || zend_is_foreign_cpp_overwrite (property_val , info ))) {
28122812 zend_readonly_property_modification_error (info );
28132813 return false;
@@ -2852,7 +2852,7 @@ static void ZEND_FASTCALL zend_jit_assign_to_typed_prop(zval *property_val, zend
28522852 return ;
28532853 }
28542854
2855- Z_PROP_FLAG_P (property_val ) &= ~IS_PROP_REINITABLE ;
2855+ Z_PROP_FLAG_P (property_val ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
28562856
28572857 value = zend_assign_to_variable_ex (property_val , & tmp , IS_TMP_VAR , EX_USES_STRICT_TYPES (), & garbage );
28582858 if (result ) {
@@ -2909,7 +2909,7 @@ static void ZEND_FASTCALL zend_jit_assign_op_to_typed_prop(zval *zptr, zend_prop
29092909
29102910 binary_op (& z_copy , zptr , value );
29112911 if (EXPECTED (zend_verify_property_type (prop_info , & z_copy , EX_USES_STRICT_TYPES ()))) {
2912- Z_PROP_FLAG_P (zptr ) &= ~IS_PROP_REINITABLE ;
2912+ Z_PROP_FLAG_P (zptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
29132913 zval_ptr_dtor (zptr );
29142914 ZVAL_COPY_VALUE (zptr , & z_copy );
29152915 } else {
@@ -3006,13 +3006,13 @@ static void ZEND_FASTCALL zend_jit_inc_typed_prop(zval *var_ptr, zend_property_i
30063006 zend_long val = _zend_jit_throw_inc_prop_error (prop_info );
30073007 ZVAL_LONG (var_ptr , val );
30083008 } else {
3009- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3009+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
30103010 }
30113011 } else if (UNEXPECTED (!zend_verify_property_type (prop_info , var_ptr , EX_USES_STRICT_TYPES ()))) {
30123012 zval_ptr_dtor (var_ptr );
30133013 ZVAL_COPY_VALUE (var_ptr , & tmp );
30143014 } else {
3015- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3015+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
30163016 zval_ptr_dtor (& tmp );
30173017 }
30183018}
@@ -3038,13 +3038,13 @@ static void ZEND_FASTCALL zend_jit_dec_typed_prop(zval *var_ptr, zend_property_i
30383038 zend_long val = _zend_jit_throw_dec_prop_error (prop_info );
30393039 ZVAL_LONG (var_ptr , val );
30403040 } else {
3041- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3041+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
30423042 }
30433043 } else if (UNEXPECTED (!zend_verify_property_type (prop_info , var_ptr , EX_USES_STRICT_TYPES ()))) {
30443044 zval_ptr_dtor (var_ptr );
30453045 ZVAL_COPY_VALUE (var_ptr , & tmp );
30463046 } else {
3047- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3047+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
30483048 zval_ptr_dtor (& tmp );
30493049 }
30503050}
@@ -3086,14 +3086,14 @@ static void ZEND_FASTCALL zend_jit_post_inc_typed_prop(zval *var_ptr, zend_prope
30863086 zend_long val = _zend_jit_throw_inc_prop_error (prop_info );
30873087 ZVAL_LONG (var_ptr , val );
30883088 } else {
3089- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3089+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
30903090 }
30913091 } else if (UNEXPECTED (!zend_verify_property_type (prop_info , var_ptr , EX_USES_STRICT_TYPES ()))) {
30923092 zval_ptr_dtor (var_ptr );
30933093 ZVAL_COPY_VALUE (var_ptr , result );
30943094 ZVAL_UNDEF (result );
30953095 } else {
3096- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3096+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
30973097 }
30983098}
30993099
@@ -3120,14 +3120,14 @@ static void ZEND_FASTCALL zend_jit_post_dec_typed_prop(zval *var_ptr, zend_prope
31203120 zend_long val = _zend_jit_throw_dec_prop_error (prop_info );
31213121 ZVAL_LONG (var_ptr , val );
31223122 } else {
3123- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3123+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
31243124 }
31253125 } else if (UNEXPECTED (!zend_verify_property_type (prop_info , var_ptr , EX_USES_STRICT_TYPES ()))) {
31263126 zval_ptr_dtor (var_ptr );
31273127 ZVAL_COPY_VALUE (var_ptr , result );
31283128 ZVAL_UNDEF (result );
31293129 } else {
3130- Z_PROP_FLAG_P (var_ptr ) &= ~IS_PROP_REINITABLE ;
3130+ Z_PROP_FLAG_P (var_ptr ) &= ~( IS_PROP_REINITABLE | IS_PROP_CTOR_REINITABLE ) ;
31313131 }
31323132}
31333133
0 commit comments