diff options
author | Bob Weinand <bobwei9@hotmail.com> | 2016-04-28 11:02:47 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2016-04-28 19:24:13 +0200 |
commit | ee2c9065d8c6dfbefb32273d409b583fcbf1977d (patch) | |
tree | d3cd0bcdf73861cf6fea3cbebec4bf2bcdeb4521 | |
parent | 75fa8842f4b64f60db65474cb5d3ca9f40875725 (diff) | |
download | php-git-ee2c9065d8c6dfbefb32273d409b583fcbf1977d.tar.gz |
Fixed bug #72116 (7.0.6 array_fill optimization breaks implementation)
-rw-r--r-- | ext/standard/array.c | 1 | ||||
-rw-r--r-- | ext/standard/tests/array/bug72116.phpt | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index a0cdd91d85..d3bb9bc700 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2029,6 +2029,7 @@ PHP_FUNCTION(array_fill) Z_ARRVAL_P(return_value)->nNumUsed = start_key + num; Z_ARRVAL_P(return_value)->nNumOfElements = num; Z_ARRVAL_P(return_value)->nInternalPointer = start_key; + Z_ARRVAL_P(return_value)->nNextFreeElement = start_key + num; if (Z_REFCOUNTED_P(val)) { GC_REFCOUNT(Z_COUNTED_P(val)) += num; diff --git a/ext/standard/tests/array/bug72116.phpt b/ext/standard/tests/array/bug72116.phpt new file mode 100644 index 0000000000..7951f69130 --- /dev/null +++ b/ext/standard/tests/array/bug72116.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #72116 (insertion after array_fill fails) +--FILE-- +<?php + +$x = array_fill(0, 1, '..'); +$x[] = 'a'; +var_dump($x); + +?> +--EXPECT-- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "a" +} + |