From 9696faa7907e468ebc25fe9cce020d6c4d287c09 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Sun, 12 Dec 2010 19:27:04 +0000 Subject: [PATCH] Fixed bug 48484 (array_product() always returns 0 for an empty array). --- ext/standard/array.c | 4 ++-- ext/standard/tests/array/bug35014.phpt | 2 +- ext/standard/tests/array/bug35014_64bit.phpt | 2 +- ext/standard/tests/array/bug48484.phpt | 8 ++++++++ 4 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 ext/standard/tests/array/bug48484.phpt diff --git a/ext/standard/array.c b/ext/standard/array.c index 83b2bf65b62..7c8a2e43e35 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -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; diff --git a/ext/standard/tests/array/bug35014.phpt b/ext/standard/tests/array/bug35014.phpt index 3a6cf216abc..9250c03e108 100644 --- a/ext/standard/tests/array/bug35014.phpt +++ b/ext/standard/tests/array/bug35014.phpt @@ -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/bug35014_64bit.phpt b/ext/standard/tests/array/bug35014_64bit.phpt index 1c325b3fb02..efd791ac993 100644 --- a/ext/standard/tests/array/bug35014_64bit.phpt +++ b/ext/standard/tests/array/bug35014_64bit.phpt @@ -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 index 00000000000..0b4afe277a4 --- /dev/null +++ b/ext/standard/tests/array/bug48484.phpt @@ -0,0 +1,8 @@ +--TEST-- +Bug 48484 (array_product() always returns 0 for an empty array) +--FILE-- + +--EXPECT-- +int(1)