Commit cab0dc65 authored by unknown's avatar unknown

Merge polly.local:/tmp/maint/bug22129/my41-bug22129

into  polly.local:/home/kaa/src/maint/mysql-4.1-maint

parents e7cee5b5 23493eb2
...@@ -274,7 +274,7 @@ a double 0 ...@@ -274,7 +274,7 @@ a double 0
drop table t1,t2,t3; drop table t1,t2,t3;
select 1e-308, 1.00000001e-300, 100000000e-300; select 1e-308, 1.00000001e-300, 100000000e-300;
1e-308 1.00000001e-300 100000000e-300 1e-308 1.00000001e-300 100000000e-300
0 1.00000001e-300 1e-292 1e-308 1.00000001e-300 1e-292
select 10e307; select 10e307;
10e307 10e307
1e+308 1e+308
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#define MAX_DBL_EXP 308 #define MAX_DBL_EXP 308
#define MAX_RESULT_FOR_MAX_EXP 1.7976931348623157 #define MAX_RESULT_FOR_MAX_EXP 1.7976931348623157
#define MIN_RESULT_FOR_MIN_EXP 2.225073858507202
static double scaler10[] = { static double scaler10[] = {
1.0, 1e10, 1e20, 1e30, 1e40, 1e50, 1e60, 1e70, 1e80, 1e90 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) ...@@ -161,26 +160,15 @@ double my_strtod(const char *str, char **end_ptr, int *error)
order= exp + (neg_exp ? -1 : 1) * (ndigits - 1); order= exp + (neg_exp ? -1 : 1) * (ndigits - 1);
if (order < 0) if (order < 0)
order= -order; order= -order;
if (order >= MAX_DBL_EXP && result) if (order >= MAX_DBL_EXP && !neg_exp && result)
{ {
double c; double c;
/* Compute modulus of C (see comment above) */ /* Compute modulus of C (see comment above) */
c= result / scaler * 10.0; 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) overflow= 1;
{ goto done;
result= 0.0;
goto done;
}
}
else
{
if (order > MAX_DBL_EXP || c > MAX_RESULT_FOR_MAX_EXP)
{
overflow= 1;
goto done;
}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment