Skip to content

Commit 2e4e175

Browse files
committed
Use the write_property() handler directly in zend_objects_clone_members_ex()
1 parent 01cc8de commit 2e4e175

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Zend/zend_objects.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,22 +294,28 @@ ZEND_API void ZEND_FASTCALL zend_objects_clone_members_ex(zend_object *new_objec
294294
}
295295

296296
if (EXPECTED(!EG(exception)) && properties != NULL) {
297+
zend_class_entry *old_scope = EG(fake_scope);
298+
299+
EG(fake_scope) = scope;
300+
297301
zend_ulong num_key;
298302
zend_string *key;
299303
zval *val;
300304
ZEND_HASH_FOREACH_KEY_VAL(properties, num_key, key, val) {
301305
if (UNEXPECTED(key == NULL)) {
302306
key = zend_long_to_str(num_key);
303-
zend_update_property_ex(scope, new_object, key, val);
307+
new_object->handlers->write_property(new_object, key, val, NULL);
304308
zend_string_release_ex(key, false);
305309
} else {
306-
zend_update_property_ex(scope, new_object, key, val);
310+
new_object->handlers->write_property(new_object, key, val, NULL);
307311
}
308312

309313
if (UNEXPECTED(EG(exception))) {
310314
break;
311315
}
312316
} ZEND_HASH_FOREACH_END();
317+
318+
EG(fake_scope) = old_scope;
313319
}
314320

315321

0 commit comments

Comments
 (0)