- Fixed bug #62892 (ReflectionClass::getTraitAliases crashes on importing trait metho...
authorFelipe Pena <felipensp@gmail.com>
Wed, 22 Aug 2012 13:50:50 +0000 (10:50 -0300)
committerFelipe Pena <felipensp@gmail.com>
Wed, 22 Aug 2012 13:50:50 +0000 (10:50 -0300)
Zend/tests/bug62892.phpt [new file with mode: 0644]
ext/reflection/php_reflection.c

diff --git a/Zend/tests/bug62892.phpt b/Zend/tests/bug62892.phpt
new file mode 100644 (file)
index 0000000..e6b0e60
--- /dev/null
@@ -0,0 +1,21 @@
+--TEST--
+Bug #62892 (ReflectionClass::getTraitAliases crashes on importing trait methods as private)
+--FILE--
+<?php
+trait myTrait {
+     public function run() {}
+}
+
+class myClass {
+     use myTrait {
+         MyTrait::run as private;
+     }
+}
+$class = new \ReflectionClass('myClass');
+var_dump($class->getTraitAliases());
+
+?>
+--EXPECTF--
+array(0) {
+}
index 6656f58c65e7594ff1d8164b978c5c69cf140779..7c9981924ded1ad2023fb1d5c3d1a8f290632f5c 100644 (file)
@@ -4464,8 +4464,10 @@ ZEND_METHOD(reflection_class, getTraitAliases)
                        int method_name_len;
                        zend_trait_method_reference *cur_ref = ce->trait_aliases[i]->trait_method;
 
-                       method_name_len = spprintf(&method_name, 0, "%s::%s", cur_ref->class_name, cur_ref->method_name);
-                       add_assoc_stringl_ex(return_value, ce->trait_aliases[i]->alias, ce->trait_aliases[i]->alias_len + 1, method_name, method_name_len, 0);
+                       if (ce->trait_aliases[i]->alias) {
+                               method_name_len = spprintf(&method_name, 0, "%s::%s", cur_ref->class_name, cur_ref->method_name);
+                               add_assoc_stringl_ex(return_value, ce->trait_aliases[i]->alias, ce->trait_aliases[i]->alias_len + 1, method_name, method_name_len, 0);
+                       }
                        i++;
                }
        }