From 89f57ea9510ef5dfdef59622bf9d4af5e36b3d1b Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Sun, 19 Feb 2006 11:42:30 +0000 Subject: [PATCH] - Static functions cannot be abstract --- Zend/zend_API.c | 3 +++ Zend/zend_compile.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 5512419ff5..2225079fb2 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2081,6 +2081,9 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, zend_function_entr scope->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; } } + if (ptr->flags & ZEND_ACC_STATIC) { + zend_error(error_type, "Static function %s%s%s() cannot be abstract", scope ? scope->name : "", scope ? "::" : "", ptr->fname); + } } else { if (scope && (scope->ce_flags & ZEND_ACC_INTERFACE)) { efree(lc_class_name); diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index ed514892c0..774455251f 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1108,6 +1108,9 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n } else { fn_flags = 0; } + if ((fn_flags & ZEND_ACC_STATIC) && (fn_flags & ZEND_ACC_ABSTRACT)) { + zend_error(E_COMPILE_ERROR, "Static function %v%s%R() cannot be abstract", is_method ? CG(active_class_entry)->name : "", is_method ? "::" : "", Z_TYPE(function_name->u.constant), Z_UNIVAL(function_name->u.constant)); + } function_token->u.op_array = CG(active_op_array); lcname = zend_u_str_case_fold(Z_TYPE(function_name->u.constant), name, name_len, 0, &lcname_len); -- 2.50.1