summaryrefslogtreecommitdiff
path: root/Zend/zend_inheritance.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-07-09 15:18:09 +0300
committerDmitry Stogov <dmitry@zend.com>2018-07-09 15:18:09 +0300
commita34fedb7237afed21b7e3084d22281cd6ac2e57b (patch)
tree0669a88468954ff1a409f8b57595954a22264e54 /Zend/zend_inheritance.c
parentc90f1964f95d3021137090be39676d22dbc226c2 (diff)
downloadphp-git-a34fedb7237afed21b7e3084d22281cd6ac2e57b.tar.gz
Eliminated check
Diffstat (limited to 'Zend/zend_inheritance.c')
-rw-r--r--Zend/zend_inheritance.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index b66464c375..1873d76007 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -588,13 +588,13 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function *
} else if (parent_flags & ZEND_ACC_ABSTRACT) {
child->common.fn_flags |= ZEND_ACC_IMPLEMENTED_ABSTRACT;
child->common.prototype = parent;
- } else if (!(parent->common.fn_flags & ZEND_ACC_CTOR) || (parent->common.prototype && (parent->common.prototype->common.scope->ce_flags & ZEND_ACC_INTERFACE))) {
+ } else if (!(parent->common.fn_flags & ZEND_ACC_CTOR)) {
+ child->common.prototype = parent->common.prototype ? parent->common.prototype : parent;
+ } else if (parent->common.prototype && (parent->common.prototype->common.scope->ce_flags & ZEND_ACC_INTERFACE)) {
/* ctors only have a prototype if it comes from an interface */
child->common.prototype = parent->common.prototype ? parent->common.prototype : parent;
/* and if that is the case, we want to check inheritance against it */
- if (parent->common.fn_flags & ZEND_ACC_CTOR) {
- parent = child->common.prototype;
- }
+ parent = child->common.prototype;
}
if (UNEXPECTED(!zend_do_perform_implementation_check(child, parent))) {