summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2013-08-28 20:33:42 -0700
committerAdam Harvey <aharvey@php.net>2013-08-28 20:33:42 -0700
commit72027cd0848f1a5c580c601573448cdea9b095ca (patch)
tree03a5c6d9bf2a3cfe3b63dd94e49f86fdbd2ad7ad /Zend/zend_API.c
parent3745bdadc03a146fd37a3528658abc86bc8494df (diff)
downloadphp-git-72027cd0848f1a5c580c601573448cdea9b095ca.tar.gz
Fix bug #65579 (Using traits with get_class_methods causes segfault).
Specifically, this checks if there are trait aliases defined in the class scope before attempting to dereference the first trait alias. This handles the case where a trait alias was used in a child trait but no aliases exist in the concrete class.
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 90d27b7987..870a9b6480 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -3917,15 +3917,16 @@ ZEND_API const char* zend_find_alias_name(zend_class_entry *ce, const char *name
{
zend_trait_alias *alias, **alias_ptr;
- alias_ptr = ce->trait_aliases;
- alias = *alias_ptr;
- while (alias) {
- if (alias->alias_len == len &&
- !strncasecmp(name, alias->alias, alias->alias_len)) {
- return alias->alias;
- }
- alias_ptr++;
+ if (alias_ptr = ce->trait_aliases) {
alias = *alias_ptr;
+ while (alias) {
+ if (alias->alias_len == len &&
+ !strncasecmp(name, alias->alias, alias->alias_len)) {
+ return alias->alias;
+ }
+ alias_ptr++;
+ alias = *alias_ptr;
+ }
}
return name;