diff options
author | unknown <kaa@polly.local> | 2006-11-08 19:07:21 +0300 |
---|---|---|
committer | unknown <kaa@polly.local> | 2006-11-08 19:07:21 +0300 |
commit | 23493eb22294350b2b2fa023c11dd33a11aeb8a0 (patch) | |
tree | 55146f690e8e5deb9b3a876f36de4d82a397892c /strings/strtod.c | |
parent | d2c90fcb8ecee24d68df83c83a70c0a8b8ab77c8 (diff) | |
download | mariadb-git-23493eb22294350b2b2fa023c11dd33a11aeb8a0.tar.gz |
Removed the underflow check (bug #22129)
mysql-test/r/type_float.result:
Fixed the testcase
strings/strtod.c:
Removed the underflow check
Diffstat (limited to 'strings/strtod.c')
-rw-r--r-- | strings/strtod.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/strings/strtod.c b/strings/strtod.c index f298e265d7f..79ba458c009 100644 --- a/strings/strtod.c +++ b/strings/strtod.c @@ -31,7 +31,6 @@ #define MAX_DBL_EXP 308 #define MAX_RESULT_FOR_MAX_EXP 1.7976931348623157 -#define MIN_RESULT_FOR_MIN_EXP 2.225073858507202 static double scaler10[] = { 1.0, 1e10, 1e20, 1e30, 1e40, 1e50, 1e60, 1e70, 1e80, 1e90 }; @@ -161,26 +160,15 @@ double my_strtod(const char *str, char **end_ptr, int *error) order= exp + (neg_exp ? -1 : 1) * (ndigits - 1); if (order < 0) order= -order; - if (order >= MAX_DBL_EXP && result) + if (order >= MAX_DBL_EXP && !neg_exp && result) { double c; /* Compute modulus of C (see comment above) */ c= result / scaler * 10.0; - if (neg_exp) + if (order > MAX_DBL_EXP || c > MAX_RESULT_FOR_MAX_EXP) { - if (order > MAX_DBL_EXP || c < MIN_RESULT_FOR_MIN_EXP) - { - result= 0.0; - goto done; - } - } - else - { - if (order > MAX_DBL_EXP || c > MAX_RESULT_FOR_MAX_EXP) - { - overflow= 1; - goto done; - } + overflow= 1; + goto done; } } |