diff options
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index d639eb6b9d..e868a8b413 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -2278,9 +2278,12 @@ static zend_bool ZEND_FASTCALL instanceof_interface_only(const zend_class_entry { uint32_t i; - for (i = 0; i < instance_ce->num_interfaces; i++) { - if (instanceof_interface_only(instance_ce->interfaces[i], ce)) { - return 1; + if (instance_ce->num_interfaces) { + ZEND_ASSERT(!(instance_ce->ce_flags & ZEND_ACC_UNRESOLVED_INTERFACES)); + for (i = 0; i < instance_ce->num_interfaces; i++) { + if (instanceof_interface_only(instance_ce->interfaces[i], ce)) { + return 1; + } } } return 0; @@ -2303,9 +2306,12 @@ static zend_bool ZEND_FASTCALL instanceof_interface(const zend_class_entry *inst { uint32_t i; - for (i = 0; i < instance_ce->num_interfaces; i++) { - if (instanceof_interface(instance_ce->interfaces[i], ce)) { - return 1; + if (instance_ce->num_interfaces) { + ZEND_ASSERT(!(instance_ce->ce_flags & ZEND_ACC_UNRESOLVED_INTERFACES)); + for (i = 0; i < instance_ce->num_interfaces; i++) { + if (instanceof_interface(instance_ce->interfaces[i], ce)) { + return 1; + } } } return instanceof_class(instance_ce, ce); |