Skip to content

Commit d8cfb47

Browse files
committed
fixup! Add ZEND_ACC2_FORBID_DYN_CALLS
1 parent ab1b483 commit d8cfb47

3 files changed

Lines changed: 52 additions & 80 deletions

File tree

Zend/zend_closures.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -749,9 +749,7 @@ static ZEND_NAMED_FUNCTION(zend_closure_internal_handler) /* {{{ */
749749
{
750750
zend_closure *closure = (zend_closure*)ZEND_CLOSURE_OBJECT(EX(func));
751751
closure->orig_internal_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU);
752-
#if ZEND_DEBUG
753752
ZEND_ASSERT(!(closure->func.common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS) || EG(exception));
754-
#endif
755753
// Assign to EX(this) so that it is released after observer checks etc.
756754
ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_RELEASE_THIS);
757755
Z_OBJ(EX(This)) = &closure->std;

Zend/zend_vm_def.h

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4160,9 +4160,8 @@ ZEND_VM_HOT_HANDLER(129, ZEND_DO_ICALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
41604160
ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
41614161
? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
41624162
zend_verify_internal_func_info(call->func, ret);
4163-
if (ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) {
4164-
ZEND_ASSERT(!(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
4165-
}
4163+
ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
4164+
|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
41664165
}
41674166
#endif
41684167
ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret);
@@ -4294,9 +4293,8 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER))
42944293
ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
42954294
? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
42964295
zend_verify_internal_func_info(call->func, ret);
4297-
if (ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) {
4298-
ZEND_ASSERT(!(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
4299-
}
4296+
ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
4297+
|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
43004298
}
43014299
ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret));
43024300
#endif
@@ -4428,9 +4426,8 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
44284426
ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
44294427
? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
44304428
zend_verify_internal_func_info(call->func, ret);
4431-
if (ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) {
4432-
ZEND_ASSERT(!(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
4433-
}
4429+
ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
4430+
|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
44344431
}
44354432
ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret));
44364433
#endif
@@ -9140,9 +9137,8 @@ ZEND_VM_HANDLER(158, ZEND_CALL_TRAMPOLINE, ANY, ANY, SPEC(OBSERVER))
91409137
ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
91419138
? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
91429139
zend_verify_internal_func_info(call->func, ret);
9143-
if (ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) {
9144-
ZEND_ASSERT(!(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
9145-
}
9140+
ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
9141+
|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
91469142
}
91479143
#endif
91489144
ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret);

Zend/zend_vm_execute.h

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

0 commit comments

Comments
 (0)