summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r--Zend/zend_operators.c18
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);