From: Ilia Alshanetsky Date: Sun, 30 Oct 2005 13:44:26 +0000 (+0000) Subject: Fixed Bug #35014 (array_product() always returns 0). X-Git-Tag: RELEASE_1_0RC2~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d22d6910ad9aed411654bd27f356fb7ee978a9eb;p=php Fixed Bug #35014 (array_product() always returns 0). --- 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)