Revert "IteratorIterator::getInnerIterator() can't return null"

This reverts commit c252420d08.

This (currently) does not hold for invalid AppendIterators,
revert for now.
This commit is contained in:
Nikita Popov 2021-07-15 11:01:28 +02:00
parent c252420d08
commit 11f62c989e
3 changed files with 9 additions and 5 deletions

View File

@ -1447,9 +1447,13 @@ PHP_METHOD(IteratorIterator, getInnerIterator)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
zval *value = &intern->inner.zobject;
ZEND_ASSERT(!Z_ISUNDEF_P(value));
ZVAL_COPY_DEREF(return_value, value);
if (!Z_ISUNDEF(intern->inner.zobject)) {
zval *value = &intern->inner.zobject;
ZVAL_COPY_DEREF(return_value, value);
} else {
RETURN_NULL();
}
} /* }}} */
static inline void spl_dual_it_free(spl_dual_it_object *intern)

View File

@ -117,7 +117,7 @@ class IteratorIterator implements OuterIterator
{
public function __construct(Traversable $iterator, ?string $class = null) {}
/** @return Iterator */
/** @return Iterator|null */
public function getInnerIterator() {}
/** @return void */

View File

@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: d1cb33b7c3d1b480b68c6e52672a8ee2a3b382ef */
* Stub hash: de49628718b5fff1a3b2516cc89108e01b67c312 */
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_EmptyIterator_current, 0, 0, 0)
ZEND_END_ARG_INFO()