diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-05-08 11:33:13 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-05-08 11:35:26 +0200 |
commit | d19b6aa5ba6ea7b488cca748934264e11469f3d5 (patch) | |
tree | 3e6519e91688410a00085cc817b127e48349f7b7 /Zend/zend_inheritance.c | |
parent | 9977de00284c2b702e4aadfcc66069befa0aaf75 (diff) | |
download | php-git-d19b6aa5ba6ea7b488cca748934264e11469f3d5.tar.gz |
Fix resolution of "parent" during inheritance check
We can't assume that the method we're checking against is part of
the parent class...
Diffstat (limited to 'Zend/zend_inheritance.c')
-rw-r--r-- | Zend/zend_inheritance.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index 2d51ed150e..fac74a28f0 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -193,8 +193,8 @@ static int zend_do_perform_type_hint_check(const zend_function *fe, zend_arg_inf fe_class_name = ZEND_TYPE_NAME(fe_arg_info->type); class_name = ZSTR_VAL(fe_class_name); class_name_len = ZSTR_LEN(fe_class_name); - if (class_name_len == sizeof("parent")-1 && !strcasecmp(class_name, "parent") && proto->common.scope) { - fe_class_name = zend_string_copy(proto->common.scope->name); + if (class_name_len == sizeof("parent")-1 && !strcasecmp(class_name, "parent") && fe->common.scope && fe->common.scope->parent) { + fe_class_name = zend_string_copy(fe->common.scope->parent->name); } else if (class_name_len == sizeof("self")-1 && !strcasecmp(class_name, "self") && fe->common.scope) { fe_class_name = zend_string_copy(fe->common.scope->name); } else { |