]> granicus.if.org Git - php/commit
Fix HT flags copying wrt iterator count
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 16 Apr 2019 09:47:41 +0000 (11:47 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 16 Apr 2019 10:14:45 +0000 (12:14 +0200)
commitf9a755d0d27eebd02fdeb9b1750aaca70b15f409
tree614988fa36e579302da47a2480e1a650dfb909b8
parent5ae49c43dc618ad373b88480a1662e480bd125fb
Fix HT flags copying wrt iterator count

HT_FLAGS() includes the full flag word, including the iterator
count. When we're fully reassigning it, we need to make sure that
we either really do want to copy the iterator count (as in some
cases in array.c) or we need to mask only the actual flag byte.

Add an assert to hash_iterators_del() to make sure the iterator
count is non-zero (which is how I ran into this) and make sure that
the iterator count is correctly preserved during array splicing.
Zend/zend_hash.c
Zend/zend_hash.h
ext/standard/array.c