From: Nikita Popov Date: Thu, 17 Dec 2015 19:59:57 +0000 (+0100) Subject: Fixed bug #71153 X-Git-Tag: php-7.0.2RC1~11^2~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a3e19527004dc67dfd875e758007b8ae135d4ed1;p=php Fixed bug #71153 --- diff --git a/NEWS b/NEWS index 86a6345953..16a91ab5a3 100644 --- a/NEWS +++ b/NEWS @@ -44,6 +44,8 @@ PHP NEWS - SPL: . Fixed bug #71077 (ReflectionMethod for ArrayObject constructor returns wrong number of parameters). (Laruence) + . Fixed bug #71153 (Performance Degradation in ArrayIterator with large + arrays). (Nikita) 17 Dec 2015, PHP 7.0.1 diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index 0329270060..31d5beaa39 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -130,6 +130,10 @@ static zend_always_inline uint32_t *spl_array_get_pos_ptr(HashTable *ht, spl_arr static void spl_array_object_free_storage(zend_object *object) { spl_array_object *intern = spl_array_from_obj(object); + + if (intern->ht_iter != (uint32_t) -1) { + zend_hash_iterator_del(intern->ht_iter); + } zend_object_std_dtor(&intern->std); diff --git a/ext/spl/tests/bug71153.phpt b/ext/spl/tests/bug71153.phpt new file mode 100644 index 0000000000..bdd940cbee --- /dev/null +++ b/ext/spl/tests/bug71153.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #71153: Performance Degradation in ArrayIterator with large arrays +--FILE-- + +--EXPECT-- +done