summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipensp@gmail.com>2012-08-22 10:50:50 -0300
committerFelipe Pena <felipensp@gmail.com>2012-08-22 10:50:50 -0300
commit7a56ac00a04d4fc72052bb679626e723da3eef44 (patch)
tree8a2fbb0a4684a9f85590b53977e067d9b3442f69
parent22f55d56659d31a3546556dd39f3833af6d1fa3d (diff)
downloadphp-git-7a56ac00a04d4fc72052bb679626e723da3eef44.tar.gz
- Fixed bug #62892 (ReflectionClass::getTraitAliases crashes on importing trait methods as private)
-rw-r--r--Zend/tests/bug62892.phpt21
-rw-r--r--ext/reflection/php_reflection.c6
2 files changed, 25 insertions, 2 deletions
diff --git a/Zend/tests/bug62892.phpt b/Zend/tests/bug62892.phpt
new file mode 100644
index 0000000000..e6b0e60ff3
--- /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 6656f58c65..7c9981924d 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++;
}
}