diff options
author | monty@mysql.com <> | 2004-04-09 07:12:41 +0300 |
---|---|---|
committer | monty@mysql.com <> | 2004-04-09 07:12:41 +0300 |
commit | f96c4941d8244743ca74b133fe5fe814a52c5001 (patch) | |
tree | b87b57af080028a2afcfb4f98e8339b2b78c6b46 /sql/field.cc | |
parent | 0ade40177780e59957477db6bf251baac8f25899 (diff) | |
download | mariadb-git-f96c4941d8244743ca74b133fe5fe814a52c5001.tar.gz |
Fixed problems noticed with last build
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 10 |
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) { |