From df38ce372741843594ef810623dba251dad21883 Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Mon, 24 Dec 2001 17:39:16 +0000 Subject: [PATCH] - Fixed bug where global functions weren't called if they didn't exist - in the class scope --- Zend/zend_execute.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index e9bc897b88..c581d751de 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1656,10 +1656,17 @@ overloaded_function_call_cont: goto do_fcall_common; case ZEND_DO_FCALL: { zval *fname = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R); - - if (zend_hash_find(EG(namespace)?&EG(namespace)->function_table:EG(function_table), fname->value.str.val, fname->value.str.len+1, (void **) &EX(function_state).function)==FAILURE) { - zend_error(E_ERROR, "Unknown function: %s()\n", fname->value.str.val); - } + + do { + if (EG(namespace)) { + if (zend_hash_find(&EG(namespace)->function_table, fname->value.str.val, fname->value.str.len+1, (void **) &EX(function_state).function) == SUCCESS) { + break; + } + } + if (zend_hash_find(EG(function_table), fname->value.str.val, fname->value.str.len+1, (void **) &EX(function_state).function)==FAILURE) { + zend_error(E_ERROR, "Unknown function: %s()\n", fname->value.str.val); + } + } while (0); EX(calling_namespace) = EG(namespace); FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1)); zend_ptr_stack_push(&EG(arg_types_stack), EX(object).ptr); -- 2.50.1