Commit:    7a56ac00a04d4fc72052bb679626e723da3eef44
Author:    Felipe Pena <felipe...@gmail.com>         Wed, 22 Aug 2012 10:50:50 
-0300
Parents:   22f55d56659d31a3546556dd39f3833af6d1fa3d
Branches:  PHP-5.4 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=7a56ac00a04d4fc72052bb679626e723da3eef44

Log:
- Fixed bug #62892 (ReflectionClass::getTraitAliases crashes on importing trait 
methods as private)

Bugs:
https://bugs.php.net/62892

Changed paths:
  A  Zend/tests/bug62892.phpt
  M  ext/reflection/php_reflection.c


Diff:
diff --git a/Zend/tests/bug62892.phpt b/Zend/tests/bug62892.phpt
new file mode 100644
index 0000000..e6b0e60
--- /dev/null
+++ b/Zend/tests/bug62892.phpt
@@ -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) {
+}
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 6656f58..7c99819 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -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++;
                }
        }


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to