Skip to content

Commit 0857518

Browse files
committed
Fallback to global namespace
1 parent 2c39a32 commit 0857518

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
@@ -3878,12 +3878,19 @@ ZEND_VM_HOT_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST, NUM|CACHE_SLOT)
38783878
fbc = CACHED_PTR(opline->result.num);
38793879
if (UNEXPECTED(fbc == NULL)) {
38803880
zval *function_name = (zval *)RT_CONSTANT(opline, opline->op2);
3881-
fbc = zend_lookup_function(Z_STR_P(function_name));
3882-
if (fbc == NULL) {
3883-
if (EXPECTED(!EG(exception))) {
3881+
fbc = zend_lookup_function(Z_STR_P(function_name)+1);
3882+
if (UNEXPECTED(fbc == NULL)) {
3883+
if (UNEXPECTED(EG(exception))) {
3884+
HANDLE_EXCEPTION();
3885+
}
3886+
/* Fallback onto global namespace */
3887+
fbc = zend_lookup_function(Z_STR_P(function_name)+2);
3888+
if (fbc == NULL) {
3889+
if (UNEXPECTED(EG(exception))) {
3890+
HANDLE_EXCEPTION();
3891+
}
38843892
ZEND_VM_DISPATCH_TO_HELPER(zend_undefined_function_helper);
38853893
}
3886-
HANDLE_EXCEPTION();
38873894
}
38883895
if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
38893896
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)