]> granicus.if.org Git - php/commitdiff
Fixed bug #75653
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 12 Jan 2018 17:30:22 +0000 (18:30 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 12 Jan 2018 17:30:22 +0000 (18:30 +0100)
NEWS
ext/standard/array.c
ext/standard/tests/array/bug75653.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 21037c15062ca8f1fd8f256a250b9ff2afbd3184..b3095be86650aecc0eac34c5748cb2949abf8a25 100644 (file)
--- 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
index 3a55333a76bc1506e8e70e3e6f7a6dce788de29d..91ffe08f7d5f2c13b7499e9017d219c62c31566d 100644 (file)
@@ -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 (file)
index 0000000..d11c1e0
--- /dev/null
@@ -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"
+}