]> granicus.if.org Git - php/commitdiff
Fixed bug #27145 (Unmangle private/protected property names before printing
authorIlia Alshanetsky <iliaa@php.net>
Thu, 5 Feb 2004 02:16:08 +0000 (02:16 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 5 Feb 2004 02:16:08 +0000 (02:16 +0000)
then inside error messages).

Zend/tests/bug27145.phpt [new file with mode: 0755]
Zend/zend_compile.c

diff --git a/Zend/tests/bug27145.phpt b/Zend/tests/bug27145.phpt
new file mode 100755 (executable)
index 0000000..f2f6dd6
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+Bug #27145 (Errors messages print unmangled PPP property names)
+--FILE--
+<?php
+class a {
+       protected static $v = "aa";
+}
+class b extends a {
+       protected static $v = "bb";
+}
+?>
+--EXPECTF--
+Fatal error: Cannot redeclare property static protected a::$v in class b in %s on line %d
\ No newline at end of file
index 25c5a34b4a8a268da9743550af70ef9f7ecd4dd3..d18bf71f73a92a8f4aad31bbc949e53418c53603 100644 (file)
@@ -1859,8 +1859,11 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro
                                        zval **new_prop;
                                        if (zend_hash_find(ce->static_members, child_info->name, child_info->name_length+1, (void**)&new_prop) == SUCCESS) {
                                                if (Z_TYPE_PP(new_prop) != IS_NULL && Z_TYPE_PP(prop) != IS_NULL) {
+                                                       char *prop_name, *tmp;
+                                                       zend_unmangle_property_name(child_info->name, &tmp, &prop_name);
+                                               
                                                        zend_error(E_COMPILE_ERROR, "Cannot change initial value of property static protected %s::$%s in class %s", 
-                                                               parent_ce->name, child_info->name, ce->name);
+                                                               parent_ce->name, prop_name, ce->name);
                                                }
                                        }
                                        (*prop)->refcount++;
@@ -1872,8 +1875,11 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro
                        }
                        pefree(prot_name, ce->type & ZEND_INTERNAL_CLASS);
                } else if (!(child_info->flags & ZEND_ACC_PRIVATE) && (child_info->flags & ZEND_ACC_STATIC)) {
+                       char *prop_name, *tmp;
+
+                       zend_unmangle_property_name(child_info->name, &tmp, &prop_name);
                        zend_error(E_COMPILE_ERROR, "Cannot redeclare property static %s %s::$%s in class %s", 
-                               zend_visibility_string(child_info->flags), parent_ce->name, child_info->name, ce->name);
+                               zend_visibility_string(child_info->flags), parent_ce->name, prop_name, ce->name);
                }
                return 0;       /* Don't copy from parent */
        } else {