From: Stanislav Malyshev Date: Sun, 4 Apr 2010 23:28:20 +0000 (+0000) Subject: change namespaced ctors - only __construct would work X-Git-Tag: php-5.3.3RC1~337 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5f11cd5693eeb658d3cbafd3fed7d51df296dafe;p=php change namespaced ctors - only __construct would work --- diff --git a/NEWS b/NEWS index 075200bb34..fd3b2dcc6f 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,9 @@ PHP NEWS mcrypt_filter). (Stas) - Added full_special_chars filter to ext/filter (Rasmus) +- Changed namespaced classes so that the ctor can only be named + __construct now. (Stas) + - Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288). (Raphael Geissert) diff --git a/Zend/tests/ns_063.phpt b/Zend/tests/ns_063.phpt index 1be000983f..dbe34b428e 100644 --- a/Zend/tests/ns_063.phpt +++ b/Zend/tests/ns_063.phpt @@ -1,5 +1,5 @@ --TEST-- -063: Support for old-style constructors in namesapces +063: Old-style constructors in namesapces (not supported!) --FILE-- name, '\\', CG(active_class_entry)->name_length))) { - short_class_name_length = CG(active_class_entry)->name_length - (short_class_name - CG(active_class_entry)->name) - 1; - ++short_class_name; - } else { - short_class_name = CG(active_class_entry)->name; - short_class_name_length = CG(active_class_entry)->name_length; - } - short_class_lcname = do_alloca(short_class_name_length + 1, use_heap); - zend_str_tolower_copy(short_class_lcname, short_class_name, short_class_name_length); + char *class_lcname; + + class_lcname = do_alloca(CG(active_class_entry)->name_length + 1, use_heap); + zend_str_tolower_copy(class_lcname, CG(active_class_entry)->name, CG(active_class_entry)->name_length); /* Improve after RC: cache the lowercase class name */ - if ((short_class_name_length == name_len) && (!memcmp(short_class_lcname, lcname, name_len))) { + if ((CG(active_class_entry)->name_length == name_len) && (!memcmp(class_lcname, lcname, name_len))) { if (CG(active_class_entry)->constructor) { zend_error(E_STRICT, "Redefining already defined constructor for class %s", CG(active_class_entry)->name); } else { @@ -1338,7 +1329,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n } else if (!(fn_flags & ZEND_ACC_STATIC)) { CG(active_op_array)->fn_flags |= ZEND_ACC_ALLOW_STATIC; } - free_alloca(short_class_lcname, use_heap); + free_alloca(class_lcname, use_heap); } efree(lcname);