summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2018-01-12 18:30:22 +0100
committerNikita Popov <nikita.ppv@gmail.com>2018-01-12 18:30:22 +0100
commit8c73fc8027a7293e81c0b2e8dc2674fe34f1eb59 (patch)
tree4a168e5b13689a4738134572c6c4d1347b179fea
parentf8c889760cbbe1fa30159b571ab85cf726ba81c5 (diff)
downloadphp-git-8c73fc8027a7293e81c0b2e8dc2674fe34f1eb59.tar.gz
Fixed bug #75653
-rw-r--r--NEWS1
-rw-r--r--ext/standard/array.c2
-rw-r--r--ext/standard/tests/array/bug75653.phpt20
3 files changed, 22 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 21037c1506..b3095be866 100644
--- a/NEWS
+++ b/NEWS
@@ -51,6 +51,7 @@ PHP NEWS
- Standard:
. Fixed bug #75781 (substr_count incorrect result). (Laruence)
+ . Fixed bug #75653 (array_values don't work on empty array). (Nikita)
- Zip:
. Display headers (buildtime) and library (runtime) versions in phpinfo
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 3a55333a76..91ffe08f7d 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -4028,7 +4028,7 @@ PHP_FUNCTION(array_values)
/* Return empty input as is */
arrlen = zend_hash_num_elements(arrval);
- if (!arrlen) {
+ if (!arrlen && arrval->nNextFreeElement == arrlen) {
RETURN_ZVAL(input, 1, 0);
}
diff --git a/ext/standard/tests/array/bug75653.phpt b/ext/standard/tests/array/bug75653.phpt
new file mode 100644
index 0000000000..d11c1e0c75
--- /dev/null
+++ b/ext/standard/tests/array/bug75653.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #75653: array_values don't work on empty array
+--FILE--
+<?php
+
+$array[] = 'data1';
+unset($array[0]);
+$array = array_values($array);
+$array[] = 'data2';
+$array[] = 'data3';
+var_dump($array);
+
+?>
+--EXPECT--
+array(2) {
+ [0]=>
+ string(5) "data2"
+ [1]=>
+ string(5) "data3"
+}