summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authormonty@mysql.com <>2004-04-09 07:12:41 +0300
committermonty@mysql.com <>2004-04-09 07:12:41 +0300
commitf96c4941d8244743ca74b133fe5fe814a52c5001 (patch)
treeb87b57af080028a2afcfb4f98e8339b2b78c6b46 /sql/field.cc
parent0ade40177780e59957477db6bf251baac8f25899 (diff)
downloadmariadb-git-f96c4941d8244743ca74b133fe5fe814a52c5001.tar.gz
Fixed problems noticed with last build
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/sql/field.cc b/sql/field.cc
index d865d2cc9e9..d5499eca075 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -2308,7 +2308,12 @@ int Field_float::store(double nr)
else
{
max_value= (log_10[field_length]-1)/log_10[dec];
- nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
+ /*
+ The following comparison is needed to not get an overflow if nr
+ is close to FLT_MAX
+ */
+ if (fabs(nr) < FLT_MAX/10.0e+32)
+ nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
}
if (nr < -max_value)
{
@@ -2603,7 +2608,8 @@ int Field_double::store(double nr)
else
{
max_value= (log_10[field_length]-1)/log_10[dec];
- nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
+ if (fabs(nr) < DBL_MAX/10.0e+32)
+ nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
}
if (nr < -max_value)
{