Fixed Bug #35014 (array_product() always returns 0).

This commit is contained in:
Ilia Alshanetsky 2005-10-30 13:44:26 +00:00
parent cc4b453611
commit d22d6910ad
3 changed files with 38 additions and 2 deletions

1
NEWS
View File

@ -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)

View File

@ -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;

View File

@ -0,0 +1,31 @@
--TEST--
Bug #35014 (array_product() always returns 0)
--FILE--
<?php
$tests = array(
'foo',
array(),
array(0),
array(3),
array(3, 3),
array(0.5, 2),
array(99999999, 99999999),
array(8.993, 7443241,988, sprintf("%u", -1)+0.44),
array(2,sprintf("%u", -1)),
);
foreach ($tests as $v) {
var_dump(array_product($v));
}
?>
--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)