]> granicus.if.org Git - php/commitdiff
Bug #44653 (Invalid namespace name resolution)
authorDmitry Stogov <dmitry@php.net>
Wed, 9 Apr 2008 08:55:45 +0000 (08:55 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 9 Apr 2008 08:55:45 +0000 (08:55 +0000)
Zend/tests/bug44653.phpt [new file with mode: 0644]
Zend/zend_compile.c

diff --git a/Zend/tests/bug44653.phpt b/Zend/tests/bug44653.phpt
new file mode 100644 (file)
index 0000000..defdba8
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+Bug #44653 (Invalid namespace name resolution)
+--FILE--
+<?php
+namespace A;
+const XX=1;
+function fooBar() { echo __FUNCTION__ . PHP_EOL; }
+
+namespace B;
+class A {
+       static function fooBar() { echo "bag1\n"; }     
+}
+class B {
+       static function fooBar() { echo "bag2\n"; }
+}
+function fooBar() { echo __FUNCTION__ . PHP_EOL; }
+var_dump(A::XX);
+A::fooBar();
+fooBar();
+B::fooBar();
+?>
+--EXPECT--
+int(1)
+A::fooBar
+B::fooBar
+B::fooBar
index 927162af6bc8e7c1165702fe0d961845db9b7081..82fec6c303e0c49ee52486ab614f57c69521c19e 100644 (file)
@@ -1597,16 +1597,9 @@ void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_
                        zend_class_entry **pce;
 
                        if (check_ns_name) {
-                               char *ns_lcname = zend_str_tolower_dup(Z_STRVAL_P(CG(current_namespace)), Z_STRLEN_P(CG(current_namespace)));
-
-                               if (Z_STRLEN_P(CG(current_namespace)) == Z_STRLEN(class_name->u.constant) &&
-                                   memcmp(lcname, ns_lcname, Z_STRLEN(class_name->u.constant)) == 0) {
-                                   /* The given name is equal to name of current namespace.
-                                      PHP will need to perform additional cheks at run-time to
-                                      determine if we assume namespace or class name. */
-                                       *fetch_type |= ZEND_FETCH_CLASS_RT_NS_NAME;
-                               }
-                               efree(ns_lcname);
+                           /* PHP will need to perform additional cheks at run-time to
+                              determine if we assume namespace or class name. */
+                               *fetch_type |= ZEND_FETCH_CLASS_RT_NS_NAME;
                        }
 
                        if ((CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES) ||