From: Marcus Boerger Date: Fri, 23 Jan 2004 20:52:39 +0000 (+0000) Subject: Disallow static declaration of clone X-Git-Tag: php_ibase_before_split~25 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7c2e02d38019efcd170ec789bd360de5637d1b84;p=php Disallow static declaration of clone --- diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 277421cee1..2e7b897e2b 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -1304,6 +1304,12 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, zend_function_entr zend_error(error_type, "Destructor %s::%s cannot be static", dtor->common.scope->name, dtor->common.function_name); } } + if (clone) { + clone->common.fn_flags |= ZEND_ACC_CLONE; + if (clone->common.fn_flags & ZEND_ACC_STATIC) { + zend_error(error_type, "Constructor %s::%s cannot be static", clone->common.scope->name, clone->common.function_name); + } + } } return SUCCESS; } diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 364df789c0..1c9d8d2570 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2400,6 +2400,12 @@ void zend_do_end_class_declaration(znode *class_token, znode *parent_token TSRML zend_error(E_COMPILE_ERROR, "Destructor %s::%s() cannot be static", ce->name, ce->destructor->common.function_name); } } + if (ce->clone) { + ce->clone->common.fn_flags |= ZEND_ACC_CLONE; + if (ce->clone->common.fn_flags & ZEND_ACC_STATIC) { + zend_error(E_COMPILE_ERROR, "Clone method %s::%s() cannot be static", ce->name, ce->clone->common.function_name); + } + } ce->line_end = zend_get_compiled_lineno(TSRMLS_C); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index e9afc1fe6f..787d1e1cb0 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -111,7 +111,8 @@ typedef struct _zend_brk_cont_element { #define ZEND_ACC_IMPLICIT_PUBLIC 0x1000 #define ZEND_ACC_CTOR 0x2000 -#define ZEND_ACC_DTOR 0x4000 +#define ZEND_ACC_DTOR 0x4000 +#define ZEND_ACC_CLONE 0x8000 char *zend_visibility_string(zend_uint fn_flags);