diff options
| -rwxr-xr-x | Zend/zend_interfaces.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index 69a546de60..93263a4f17 100755 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c @@ -272,7 +272,7 @@ static zend_object_iterator *zend_user_it_get_new_iterator(zend_class_entry *ce, zend_class_entry *ce_it = Z_TYPE_P(iterator) == IS_OBJECT ? Z_OBJCE_P(iterator) : NULL; - if (!ce || !ce_it || !ce_it->get_iterator) { + if (!ce || !ce_it || !ce_it->get_iterator || (ce_it->get_iterator == zend_user_it_get_new_iterator && iterator == object)) { zend_error(E_WARNING, "Objects returned by %s::getIterator() must be traversable or implement interface Iterator", ce->name); zval_ptr_dtor(&iterator); return NULL; |
