cvs: ZendEngine2(PHP_5_3) / zend_API.c zend_compile.c /tests ns_063.phpt

From: Date: Mon, 05 May 2008 09:44:39 +0000
Subject: cvs: ZendEngine2(PHP_5_3) / zend_API.c zend_compile.c /tests ns_063.phpt
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-6656@lists.php.net to get a copy of this message
dmitry Mon May 5 09:44:39 2008 UTC Added files: (Branch: PHP_5_3) /ZendEngine2/tests ns_063.phpt Modified files: /ZendEngine2 zend_API.c zend_compile.c Log: Support for old-style constructors in namespaces http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_API.c?r1=1.296.2.27.2.34.2.33&r2=1.296.2.27.2.34.2.34&diff_format=u Index: ZendEngine2/zend_API.c diff -u ZendEngine2/zend_API.c:1.296.2.27.2.34.2.33 ZendEngine2/zend_API.c:1.296.2.27.2.34.2.34 --- ZendEngine2/zend_API.c:1.296.2.27.2.34.2.33 Tue Mar 25 13:04:03 2008 +++ ZendEngine2/zend_API.c Mon May 5 09:44:39 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_API.c,v 1.296.2.27.2.34.2.33 2008/03/25 13:04:03 dmitry Exp $ */ +/* $Id: zend_API.c,v 1.296.2.27.2.34.2.34 2008/05/05 09:44:39 dmitry Exp $ */ #include "zend.h" #include "zend_execute.h" @@ -1792,7 +1792,13 @@ if (scope) { class_name_len = strlen(scope->name); - lc_class_name = zend_str_tolower_dup(scope->name, class_name_len); + if ((lc_class_name = zend_memrchr(scope->name, ':', class_name_len))) { + lc_class_name++; + class_name_len -= (lc_class_name - scope->name); + lc_class_name = zend_str_tolower_dup(lc_class_name, class_name_len); + } else { + lc_class_name = zend_str_tolower_dup(scope->name, class_name_len); + } } while (ptr->fname) { http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_compile.c?r1=1.647.2.27.2.41.2.60&r2=1.647.2.27.2.41.2.61&diff_format=u Index: ZendEngine2/zend_compile.c diff -u ZendEngine2/zend_compile.c:1.647.2.27.2.41.2.60 ZendEngine2/zend_compile.c:1.647.2.27.2.41.2.61 --- ZendEngine2/zend_compile.c:1.647.2.27.2.41.2.60 Tue Apr 29 08:15:16 2008 +++ ZendEngine2/zend_compile.c Mon May 5 09:44:39 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_compile.c,v 1.647.2.27.2.41.2.60 2008/04/29 08:15:16 dmitry Exp $ */ +/* $Id: zend_compile.c,v 1.647.2.27.2.41.2.61 2008/05/05 09:44:39 dmitry Exp $ */ #include <zend_language_parser.h> #include "zend.h" @@ -1148,9 +1148,6 @@ op_array.line_start = zend_get_compiled_lineno(TSRMLS_C); if (is_method) { - char *short_class_name = CG(active_class_entry)->name; - int short_class_name_length = CG(active_class_entry)->name_length; - if (zend_hash_add(&CG(active_class_entry)->function_table, lcname, name_len+1, &op_array, sizeof(zend_op_array), (void **) &CG(active_op_array)) == FAILURE) { zend_op_array *child_op_array, *parent_op_array; if (CG(active_class_entry)->parent @@ -1173,11 +1170,22 @@ } if (!(CG(active_class_entry)->ce_flags & ZEND_ACC_INTERFACE)) { - short_class_name = do_alloca(short_class_name_length + 1, use_heap); - zend_str_tolower_copy(short_class_name, CG(active_class_entry)->name, short_class_name_length); + char *short_class_name; + int short_class_name_length; + char *short_class_lcname; + + if ((short_class_name = zend_memrchr(CG(active_class_entry)->name, ':', CG(active_class_entry)->name_length))) { + short_class_name++; + short_class_name_length = CG(active_class_entry)->name_length - (short_class_name - CG(active_class_entry)->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); /* Improve after RC: cache the lowercase class name */ - if ((short_class_name_length == name_len) && (!memcmp(short_class_name, lcname, name_len))) { + if ((short_class_name_length == name_len) && (!memcmp(short_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 { @@ -1209,7 +1217,7 @@ } else if (!(fn_flags & ZEND_ACC_STATIC)) { CG(active_op_array)->fn_flags |= ZEND_ACC_ALLOW_STATIC; } - free_alloca(short_class_name, use_heap); + free_alloca(short_class_lcname, use_heap); } efree(lcname); http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/ns_063.phpt?view=markup&rev=1.1 Index: ZendEngine2/tests/ns_063.phpt +++ ZendEngine2/tests/ns_063.phpt --TEST-- 063: Support for old-style constructors in namesapces --FILE-- <?php namespace Foo; class Bar { function Bar() { echo "ok\n"; } } new Bar(); --EXPECT-- ok

« previous php.zend-engine.cvs (#6656) next »