From: Andi Gutmans Date: Mon, 24 Dec 2001 17:39:16 +0000 (+0000) Subject: - Fixed bug where global functions weren't called if they didn't exist X-Git-Tag: PRE_ISSET_PATCH~423 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=df38ce372741843594ef810623dba251dad21883;p=php - Fixed bug where global functions weren't called if they didn't exist - in the class scope --- 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);