From ccb113c3e5964ef2d2e5b4ae3e67d61702db9bfc Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 22 Dec 2017 18:00:17 +0100 Subject: [PATCH] Fixed bug #75717 --- NEWS | 6 +++++- ext/spl/spl_array.c | 1 + ext/spl/tests/bug75717.phpt | 26 ++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 ext/spl/tests/bug75717.phpt diff --git a/NEWS b/NEWS index 2483bd6bc8..c7d75f1503 100644 --- a/NEWS +++ b/NEWS @@ -15,7 +15,11 @@ PHP NEWS - SOAP: . Fixed bug #70469 (SoapClient generates E_ERROR even if exceptions=1 is -used). (Anton Artamonov) + used). (Anton Artamonov) + +- SPL: + . Fixed bug #75717 (RecursiveArrayIterator does not traverse arrays by + reference). (Nikita) 04 Jan 2018, PHP 7.1.13 diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index 81bbe48bd4..1be55d785b 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -1642,6 +1642,7 @@ SPL_METHOD(Array, hasChildren) RETURN_FALSE; } + ZVAL_DEREF(entry); RETURN_BOOL(Z_TYPE_P(entry) == IS_ARRAY || (Z_TYPE_P(entry) == IS_OBJECT && (intern->ar_flags & SPL_ARRAY_CHILD_ARRAYS_ONLY) == 0)); } /* }}} */ diff --git a/ext/spl/tests/bug75717.phpt b/ext/spl/tests/bug75717.phpt new file mode 100644 index 0000000000..485b9d8bc4 --- /dev/null +++ b/ext/spl/tests/bug75717.phpt @@ -0,0 +1,26 @@ +--TEST-- +Bug #75717: RecursiveArrayIterator does not traverse arrays by reference +--FILE-- + +--EXPECT-- +some nested items +some nested items -- 2.40.0