]> granicus.if.org Git - php/commitdiff
fix division by zero. throw an warning if the array is empty.
authorAndrey Hristov <andrey@php.net>
Mon, 2 May 2005 11:01:14 +0000 (11:01 +0000)
committerAndrey Hristov <andrey@php.net>
Mon, 2 May 2005 11:01:14 +0000 (11:01 +0000)
ext/standard/math.c
ext/standard/tests/math/math_std_dev.phpt

index a1237165fdd3cc2932ac5d3e9fa8d5eb3795a0af..528b864cdd9a1c196b804d46880699548b005fed 100644 (file)
@@ -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);
index a68384c5410445a1389b21ff40c9804c4ea47fcf..a8f74278fbadc7cd7188d8e45c5daee6ac233aee 100644 (file)
@@ -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