--- /dev/null
+--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
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) ||