Skip to content

Commit f5dab93

Browse files
committed
Fallback to global namespace
1 parent 93fb9b8 commit f5dab93

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

Zend/zend_vm_def.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3861,12 +3861,19 @@ ZEND_VM_HOT_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST, NUM|CACHE_SLOT)
38613861
fbc = CACHED_PTR(opline->result.num);
38623862
if (UNEXPECTED(fbc == NULL)) {
38633863
zval *function_name = (zval *)RT_CONSTANT(opline, opline->op2);
3864-
fbc = zend_lookup_function(Z_STR_P(function_name));
3865-
if (fbc == NULL) {
3866-
if (EXPECTED(!EG(exception))) {
3864+
fbc = zend_lookup_function(Z_STR_P(function_name)+1);
3865+
if (UNEXPECTED(fbc == NULL)) {
3866+
if (UNEXPECTED(EG(exception))) {
3867+
HANDLE_EXCEPTION();
3868+
}
3869+
/* Fallback onto global namespace */
3870+
fbc = zend_lookup_function(Z_STR_P(function_name)+2);
3871+
if (fbc == NULL) {
3872+
if (UNEXPECTED(EG(exception))) {
3873+
HANDLE_EXCEPTION();
3874+
}
38673875
ZEND_VM_DISPATCH_TO_HELPER(zend_undefined_function_helper);
38683876
}
3869-
HANDLE_EXCEPTION();
38703877
}
38713878
if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
38723879
init_func_run_time_cache(&fbc->op_array);

Zend/zend_vm_execute.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3637,12 +3637,19 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_N
36373637
fbc = CACHED_PTR(opline->result.num);
36383638
if (UNEXPECTED(fbc == NULL)) {
36393639
zval *function_name = (zval *)RT_CONSTANT(opline, opline->op2);
3640-
fbc = zend_lookup_function(Z_STR_P(function_name));
3641-
if (fbc == NULL) {
3642-
if (EXPECTED(!EG(exception))) {
3640+
fbc = zend_lookup_function(Z_STR_P(function_name)+1);
3641+
if (UNEXPECTED(fbc == NULL)) {
3642+
if (UNEXPECTED(EG(exception))) {
3643+
HANDLE_EXCEPTION();
3644+
}
3645+
/* Fallback onto global namespace */
3646+
fbc = zend_lookup_function(Z_STR_P(function_name)+2);
3647+
if (fbc == NULL) {
3648+
if (UNEXPECTED(EG(exception))) {
3649+
HANDLE_EXCEPTION();
3650+
}
36433651
ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36443652
}
3645-
HANDLE_EXCEPTION();
36463653
}
36473654
if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
36483655
init_func_run_time_cache(&fbc->op_array);

0 commit comments

Comments
 (0)