]> granicus.if.org Git - php/commitdiff
Fixed bug 48484 (array_product() always returns 0 for an empty array).
authorIlia Alshanetsky <iliaa@php.net>
Sun, 12 Dec 2010 19:27:04 +0000 (19:27 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 12 Dec 2010 19:27:04 +0000 (19:27 +0000)
ext/standard/array.c
ext/standard/tests/array/bug35014.phpt
ext/standard/tests/array/bug35014_64bit.phpt
ext/standard/tests/array/bug48484.phpt [new file with mode: 0644]

index 83b2bf65b628a6c9349dfe96dfe8a057a98caa38..7c8a2e43e3557652798f0bb0e3c8130de40f7550 100644 (file)
@@ -4052,10 +4052,10 @@ PHP_FUNCTION(array_product)
                return;
        }
 
+       ZVAL_LONG(return_value, 1);
        if (!zend_hash_num_elements(Z_ARRVAL_P(input))) {
-               RETURN_LONG(0);
+               return;
        }
-       ZVAL_LONG(return_value, 1);
 
        for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(input), &pos);
                zend_hash_get_current_data_ex(Z_ARRVAL_P(input), (void **)&entry, &pos) == SUCCESS;
index 3a6cf216abc53053a08939b55a26b1a389545384..9250c03e1082690e8a2d3f2bcd47df681e1629bf 100644 (file)
@@ -25,7 +25,7 @@ foreach ($tests as $v) {
 --EXPECTF--    
 Warning: array_product() expects parameter 1 to be array, string given in %s on line %d
 NULL
-int(0)
+int(1)
 int(0)
 int(3)
 int(9)
index 1c325b3fb02be27ddaf2defc989c6adc07d248aa..efd791ac993909fb7cfacb3f958bc6f6cb440e2b 100644 (file)
@@ -25,7 +25,7 @@ foreach ($tests as $v) {
 --EXPECTF--    
 Warning: array_product() expects parameter 1 to be array, string given in %s on line %d
 NULL
-int(0)
+int(1)
 int(0)
 int(3)
 int(9)
diff --git a/ext/standard/tests/array/bug48484.phpt b/ext/standard/tests/array/bug48484.phpt
new file mode 100644 (file)
index 0000000..0b4afe2
--- /dev/null
@@ -0,0 +1,8 @@
+--TEST--
+Bug 48484 (array_product() always returns 0 for an empty array)
+--FILE--
+<?php
+var_dump(array_product(array()));
+?>
+--EXPECT--     
+int(1)