From d22d6910ad9aed411654bd27f356fb7ee978a9eb Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Sun, 30 Oct 2005 13:44:26 +0000 Subject: [PATCH] Fixed Bug #35014 (array_product() always returns 0). --- NEWS | 1 + ext/standard/array.c | 8 +++++-- ext/standard/tests/array/bug35014.phpt | 31 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 ext/standard/tests/array/bug35014.phpt diff --git a/NEWS b/NEWS index ec020b10e3..a1dc4d13c3 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Nov 2005, PHP 5.1 +- Fixed bug #35014 (array_product() always returns 0). (Ilia) 28 Oct 2005, PHP 5.1 Release Candidate 4 - Fixed fgetcsv() and fputcsv() inconsistency. (Dmitry) diff --git a/ext/standard/array.c b/ext/standard/array.c index bbb4e958bd..b00934bfc6 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3996,8 +3996,12 @@ PHP_FUNCTION(array_product) php_error_docref(NULL TSRMLS_CC, E_WARNING, "The argument should be an array"); return; } - - ZVAL_LONG(return_value, 0); + + if (!zend_hash_num_elements(Z_ARRVAL_PP(input))) { + RETURN_LONG(0); + return; + } + ZVAL_LONG(return_value, 1); for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos); zend_hash_get_current_data_ex(Z_ARRVAL_PP(input), (void **)&entry, &pos) == SUCCESS; diff --git a/ext/standard/tests/array/bug35014.phpt b/ext/standard/tests/array/bug35014.phpt new file mode 100644 index 0000000000..8599a3c7ca --- /dev/null +++ b/ext/standard/tests/array/bug35014.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #35014 (array_product() always returns 0) +--FILE-- + +--EXPECTF-- +Warning: array_product(): The argument should be an array in %s/bug35014.php on line 15 +NULL +int(0) +int(0) +int(3) +int(9) +float(1) +float(9.9999998E+15) +float(2.8404260053903E+20) +float(8589934590) -- 2.40.0