]> granicus.if.org Git - php/commitdiff
Additional fix for bug #52550 & fix test & warning from previous fixes
authorIlia Alshanetsky <iliaa@php.net>
Sun, 8 Aug 2010 15:45:02 +0000 (15:45 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 8 Aug 2010 15:45:02 +0000 (15:45 +0000)
ext/standard/math.c
ext/standard/tests/math/log_variation2.phpt

index accddaa0bbed4d2cdd0b5c5f8fd210077822b40d..5c758d28788781fa8c0263d2cd84b49ad5f0522d 100644 (file)
@@ -29,6 +29,8 @@
 #include <float.h>
 #include <stdlib.h>
 
+#include "basic_functions.h"
+
 /* {{{ php_intlog10abs
    Returns floor(log10(fabs(val))), uses fast binary search */
 static inline int php_intlog10abs(double value) {
@@ -127,7 +129,11 @@ PHPAPI double _php_math_round(double value, int places, int mode) {
        double tmp_value;
        int precision_places;
 
-       precision_places = 14 - php_intlog10abs(value);
+       if ((precision_places = php_intlog10abs(value)) > 0) {
+               precision_places = 14 - php_intlog10abs(value);
+       } else {
+               precision_places = 14;
+       }
 
        f1 = php_intpow10(abs(places));
 
index 00b3b316dc6187e7b2c2383dccb5441749c82c69..327e7c5b9befc3a71f3cbccf49105d0b75472d44 100644 (file)
@@ -94,7 +94,7 @@ Warning: log(): base must be greater than 0 in %s on line %d
 bool(false)
 
 -- Iteration 2 --
-float(INF)
+float(NAN)
 
 -- Iteration 3 --
 float(0.12145441273706)
@@ -135,7 +135,7 @@ Warning: log(): base must be greater than 0 in %s on line %d
 bool(false)
 
 -- Iteration 13 --
-float(INF)
+float(NAN)
 
 -- Iteration 14 --
 
@@ -143,7 +143,7 @@ Warning: log(): base must be greater than 0 in %s on line %d
 bool(false)
 
 -- Iteration 15 --
-float(INF)
+float(NAN)
 
 -- Iteration 16 --