summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTjerk Meesters <datibbaw@php.net>2014-07-30 18:17:13 +0800
committerTjerk Meesters <datibbaw@php.net>2014-07-30 18:17:13 +0800
commite9967292c37d5bde48e568745d14d6222e989d63 (patch)
tree2ea28539bf41fd02cfbb2191b0e3ba28bdc8ed76
parentaa3ddda8e504dd2a01e6fa786efda7d3888a9241 (diff)
parentb3466f862fcafde742515e7cdd1e170c03837af5 (diff)
downloadphp-git-e9967292c37d5bde48e568745d14d6222e989d63.tar.gz
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: 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 1a29afa6dc..b2e9a6f284 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1985,7 +1985,7 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end)
if (should_rehash) {
zend_hash_rehash(Z_ARRVAL_P(stack));
}
- } 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