From: Andrey Hristov Date: Mon, 2 May 2005 11:01:14 +0000 (+0000) Subject: fix division by zero. throw an warning if the array is empty. X-Git-Tag: php-5.0.1b1~352 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6141c5690d251480852e185ed00f231e433cfef4;p=php fix division by zero. throw an warning if the array is empty. --- diff --git a/ext/standard/math.c b/ext/standard/math.c index a1237165fd..528b864cdd 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1195,6 +1195,10 @@ PHP_FUNCTION(math_std_dev) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) { return; } + if (zend_hash_num_elements(Z_ARRVAL_P(arr)) == 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements"); + RETURN_FALSE; + } zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos); while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) { convert_to_double_ex(entry); diff --git a/ext/standard/tests/math/math_std_dev.phpt b/ext/standard/tests/math/math_std_dev.phpt index a68384c541..a8f74278fb 100644 --- a/ext/standard/tests/math/math_std_dev.phpt +++ b/ext/standard/tests/math/math_std_dev.phpt @@ -5,6 +5,10 @@ math_std_dev() tests $a=array(4, 1, 7); $dev=math_std_dev($a); var_dump(sprintf("%2.9f", $dev)); +var_dump(math_std_dev(array())); ?> ---EXPECT-- -string(11) "2.449489743" \ No newline at end of file +--EXPECTF-- +string(11) "2.449489743" + +Warning: math_std_dev(): The array has zero elements in %s on line %d +bool(false) \ No newline at end of file