summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTjerk Meesters <datibbaw@php.net>2014-07-30 18:28:23 +0800
committerTjerk Meesters <datibbaw@php.net>2014-07-30 18:28:23 +0800
commit0dc88c45b8d93993f7f71129c1b6e77cc5f620a1 (patch)
treeac89276965792b099e2adc8dd6b5213b6c7ecdb6
parentff5a934f2189f0c1b76b313e071f214b84886342 (diff)
parentf9258929201616750d418c629f7afdcfdab7dada (diff)
downloadphp-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.c2
-rw-r--r--ext/standard/tests/array/bug67693.phpt25
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