Skip to content

Commit 452f08a

Browse files
committed
zend_objects: Unlock readonly properties after __clone() for clone-with
1 parent efeef55 commit 452f08a

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

Zend/zend_objects.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,14 @@ ZEND_API void ZEND_FASTCALL zend_objects_clone_members_with(zend_object *new_obj
270270
}
271271

272272
if (EXPECTED(!EG(exception)) && zend_hash_num_elements(properties) > 0) {
273+
/* Unlock readonly properties once more. */
274+
if (ZEND_CLASS_HAS_READONLY_PROPS(new_object->ce) && old_object->ce->clone) {
275+
for (uint32_t i = 0; i < new_object->ce->default_properties_count; i++) {
276+
zval* prop = OBJ_PROP_NUM(new_object, i);
277+
Z_PROP_FLAG_P(prop) |= IS_PROP_REINITABLE;
278+
}
279+
}
280+
273281
const zend_class_entry *old_scope = EG(fake_scope);
274282

275283
EG(fake_scope) = scope;

0 commit comments

Comments
 (0)