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