diff options
author | Tjerk Meesters <datibbaw@php.net> | 2014-07-30 18:28:23 +0800 |
---|---|---|
committer | Tjerk Meesters <datibbaw@php.net> | 2014-07-30 18:28:23 +0800 |
commit | 0dc88c45b8d93993f7f71129c1b6e77cc5f620a1 (patch) | |
tree | ac89276965792b099e2adc8dd6b5213b6c7ecdb6 | |
parent | ff5a934f2189f0c1b76b313e071f214b84886342 (diff) | |
parent | f9258929201616750d418c629f7afdcfdab7dada (diff) | |
download | php-git-0dc88c45b8d93993f7f71129c1b6e77cc5f620a1.tar.gz |
Merge branch 'PHP-5.6'
* PHP-5.6:
Updated NEWS for #67693
Fixed bug #67693 - incorrect push to the empty array
-rw-r--r-- | ext/standard/array.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/array/bug67693.phpt | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 54e8951f23..6a435ae09a 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1893,7 +1893,7 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end) /* If we did a shift... re-index like it did before */ if (!off_the_end) { zend_hash_reindex(Z_ARRVAL_P(stack), 1); - } else if (!key_len && index >= Z_ARRVAL_P(stack)->nNextFreeElement - 1) { + } else if (!key_len && Z_ARRVAL_P(stack)->nNextFreeElement > 0 && index >= Z_ARRVAL_P(stack)->nNextFreeElement - 1) { Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1; } diff --git a/ext/standard/tests/array/bug67693.phpt b/ext/standard/tests/array/bug67693.phpt new file mode 100644 index 0000000000..516436c511 --- /dev/null +++ b/ext/standard/tests/array/bug67693.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #67693 - incorrect push to empty array +--FILE-- +<?php + +$array = array(-1 => 0); + +array_pop($array); + +array_push($array, 0); +array_push($array, 0); + +var_dump($array); + +echo"\nDone"; +?> +--EXPECT-- +array(2) { + [0]=> + int(0) + [1]=> + int(0) +} + +Done |