MFB51: Fixed bug #35014 (array_product() always returns 0).

This commit is contained in:
Ilia Alshanetsky 2005-10-30 13:46:34 +00:00
parent e1ce1262ce
commit 1321658d91
2 changed files with 35 additions and 1 deletions

View File

@ -4244,7 +4244,10 @@ PHP_FUNCTION(array_product)
return; return;
} }
ZVAL_LONG(return_value, 0); if (!zend_hash_num_elements(Z_ARRVAL_PP(input))) {
RETURN_LONG(0);
}
ZVAL_LONG(return_value, 1);
for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos); 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; 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)