summaryrefslogtreecommitdiff
path: root/Zend/zend_interfaces.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-07-14 12:30:50 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-07-14 12:31:06 +0200
commit70501b81a75c7c4cd0ec3a121e290e561829deb9 (patch)
treedecfc1f946fe6b9019ceb0b18f87522b6905ce88 /Zend/zend_interfaces.c
parent8c89f23c4552405b4603156c0c81d6cc0bd7f5c3 (diff)
downloadphp-git-70501b81a75c7c4cd0ec3a121e290e561829deb9.tar.gz
Fixed bug #79852
Diffstat (limited to 'Zend/zend_interfaces.c')
-rw-r--r--Zend/zend_interfaces.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c
index 68d0077795..37c72ef554 100644
--- a/Zend/zend_interfaces.c
+++ b/Zend/zend_interfaces.c
@@ -469,6 +469,7 @@ ZEND_API int zend_create_internal_iterator_zval(zval *return_value, zval *obj) {
zend_internal_iterator *intern =
(zend_internal_iterator *) zend_internal_iterator_create(zend_ce_internal_iterator);
intern->iter = iter;
+ intern->iter->index = 0;
ZVAL_OBJ(return_value, &intern->std);
return SUCCESS;
}
@@ -559,8 +560,9 @@ ZEND_METHOD(InternalIterator, next) {
RETURN_THROWS();
}
- intern->iter->funcs->move_forward(intern->iter);
+ /* Advance index first to match foreach behavior. */
intern->iter->index++;
+ intern->iter->funcs->move_forward(intern->iter);
}
ZEND_METHOD(InternalIterator, valid) {