@@ -41,9 +41,17 @@ zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case
41
41
zend_object * zobj = zend_objects_new (ce );
42
42
ZVAL_OBJ (result , zobj );
43
43
44
- ZVAL_STR_COPY (OBJ_PROP_NUM (zobj , 0 ), case_name );
44
+ zval * zname = OBJ_PROP_NUM (zobj , 0 );
45
+ ZVAL_STR_COPY (zname , case_name );
46
+ /* ZVAL_COPY does not set Z_PROP_FLAG, this needs to be cleared to avoid leaving IS_PROP_REINITABLE set */
47
+ Z_PROP_FLAG_P (zname ) = 0 ;
48
+
45
49
if (backing_value_zv != NULL ) {
46
- ZVAL_COPY (OBJ_PROP_NUM (zobj , 1 ), backing_value_zv );
50
+ zval * prop = OBJ_PROP_NUM (zobj , 1 );
51
+
52
+ ZVAL_COPY (prop , backing_value_zv );
53
+ /* ZVAL_COPY does not set Z_PROP_FLAG, this needs to be cleared to avoid leaving IS_PROP_REINITABLE set */
54
+ Z_PROP_FLAG_P (prop ) = 0 ;
47
55
}
48
56
49
57
return zobj ;
@@ -179,7 +187,7 @@ void zend_enum_add_interfaces(zend_class_entry *ce)
179
187
180
188
if (ce -> enum_backing_type != IS_UNDEF ) {
181
189
ce -> interface_names [num_interfaces_before + 1 ].name = zend_string_copy (zend_ce_backed_enum -> name );
182
- ce -> interface_names [num_interfaces_before + 1 ].lc_name = zend_string_init ("backedenum" , sizeof ("backedenum" ) - 1 , 0 );
190
+ ce -> interface_names [num_interfaces_before + 1 ].lc_name = zend_string_init ("backedenum" , sizeof ("backedenum" ) - 1 , 0 );
183
191
}
184
192
185
193
ce -> default_object_handlers = & zend_enum_object_handlers ;
0 commit comments