From: Zeev Suraski Date: Tue, 11 Mar 2003 23:19:45 +0000 (+0000) Subject: Fix handling of ::func() X-Git-Tag: RELEASE_0_5~511 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d40537327046c20f1b74529419b2cbb091256b2a;p=php Fix handling of ::func() --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index ffa61307d5..6043f9e2e3 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2521,7 +2521,11 @@ int zend_init_static_method_call_handler(ZEND_OPCODE_HANDLER_ARGS) function_name_strlen = tmp.value.str.len; } - ce = EX_T(EX(opline)->op1.u.var).EA.class_entry; + if (EX(opline)->op1.op_type == IS_UNUSED) { + ce = EG(global_namespace_ptr); + } else { + ce = EX_T(EX(opline)->op1.u.var).EA.class_entry; + } EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC); EX(calling_scope) = EX(fbc)->common.scope; diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index aa3e75d1c8..7db7124ea3 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -597,7 +597,12 @@ zend_function *zend_std_get_static_method(zend_class_entry *ce, char *function_n zend_function *fbc; if (zend_hash_find(&ce->function_table, function_name_strval, function_name_strlen+1, (void **) &fbc)==FAILURE) { - zend_error(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); + char *class_name = ce->name; + + if (!class_name) { + class_name = ""; + } + zend_error(E_ERROR, "Call to undefined method %s::%s()", class_name, function_name_strval); } if (fbc->op_array.fn_flags & ZEND_ACC_PUBLIC) { /* No further checks necessary, most common case */