Skip to content

Commit 6029234

Browse files
committed
Fix this handling for parent hook call
1 parent 8b99359 commit 6029234

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

Zend/zend_vm_def.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9743,10 +9743,16 @@ ZEND_VM_HANDLER(209, ZEND_INIT_PARENT_PROPERTY_HOOK_CALL, CONST, UNUSED|NUM, NUM
97439743
zend_execute_data *call;
97449744
if (hook) {
97459745
call = zend_vm_stack_push_call_frame(
9746-
ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
9746+
ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS,
97479747
hook,
97489748
opline->extended_value,
9749-
ZEND_THIS);
9749+
Z_OBJ_P(ZEND_THIS));
9750+
if (EXPECTED(hook->type == ZEND_USER_FUNCTION)) {
9751+
if (UNEXPECTED(!RUN_TIME_CACHE(&hook->op_array))) {
9752+
init_func_run_time_cache(&hook->op_array);
9753+
}
9754+
call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
9755+
}
97509756
} else {
97519757
zend_function *fbc;
97529758
if (hook_kind == ZEND_PROPERTY_HOOK_GET) {
@@ -9759,10 +9765,10 @@ ZEND_VM_HANDLER(209, ZEND_INIT_PARENT_PROPERTY_HOOK_CALL, CONST, UNUSED|NUM, NUM
97599765
zend_parent_hook_call_info *hook_call_info = emalloc(sizeof(zend_parent_hook_call_info));
97609766
hook_call_info->object = Z_PTR_P(ZEND_THIS);
97619767
hook_call_info->property = property_name;
9762-
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS,
9768+
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
97639769
fbc, opline->extended_value, hook_call_info);
97649770
/* zend_vm_stack_push_call_frame stores this as IS_OBJECT, we need to convert it to IS_PTR. */
9765-
ZVAL_PTR(&call->This, hook_call_info);
9771+
call->This.u1.v.type = IS_PTR;
97669772
}
97679773

97689774
call->prev_execute_data = EX(call);

Zend/zend_vm_execute.h

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)