diff options
author | Tjerk Meesters <datibbaw@php.net> | 2014-07-30 17:54:09 +0800 |
---|---|---|
committer | Tjerk Meesters <datibbaw@php.net> | 2014-07-30 18:15:14 +0800 |
commit | da3add26cf7d9eec2023fdd3e52550ccb49aa74c (patch) | |
tree | fc7a69fc2e949c09c3d87edda6266c240edc13ee | |
parent | ab6c1d21f9cec83eac21a8930fdfc5acb5850da8 (diff) | |
download | php-git-da3add26cf7d9eec2023fdd3e52550ccb49aa74c.tar.gz |
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 c2efca58fc..06cac0e646 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2020,7 +2020,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 |