diff options
author | Andi Gutmans <andi@php.net> | 2001-12-24 17:39:16 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 2001-12-24 17:39:16 +0000 |
commit | df38ce372741843594ef810623dba251dad21883 (patch) | |
tree | c22f0aad38d134f3f3c23d18689d86ecf40e65ff | |
parent | 49f0b12a96462f5fd36f52bce4bf9a4c7fbf98cf (diff) | |
download | php-git-df38ce372741843594ef810623dba251dad21883.tar.gz |
- Fixed bug where global functions weren't called if they didn't exist
- in the class scope
-rw-r--r-- | Zend/zend_execute.c | 15 |
1 files 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); |