From 6141c5690d251480852e185ed00f231e433cfef4 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Mon, 2 May 2005 11:01:14 +0000 Subject: [PATCH] fix division by zero. throw an warning if the array is empty. --- ext/standard/math.c | 4 ++++ ext/standard/tests/math/math_std_dev.phpt | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) 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 -- 2.50.1