summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorholyfoot/hf@mysql.com/hfmain.(none) <>2007-05-21 22:22:47 +0500
committerholyfoot/hf@mysql.com/hfmain.(none) <>2007-05-21 22:22:47 +0500
commit84a572aabf092a799a81e065d79caa88fdf46ef3 (patch)
tree97cd5e0068c8bfdcd0bbf524552be2778b2e1e63 /strings
parentbb089cea3852546e37d6a241b35f9223759b88c1 (diff)
downloadmariadb-git-84a572aabf092a799a81e065d79caa88fdf46ef3.tar.gz
Bug #27984 Long Decimal Maths produces truncated results.
decimal_round failed to perform a correct rounding of a decimal number if its first nine digits were '9'. It just sets those digits to 0.
Diffstat (limited to 'strings')
-rw-r--r--strings/decimal.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/strings/decimal.c b/strings/decimal.c
index 1ae75167794..f1f02f3a071 100644
--- a/strings/decimal.c
+++ b/strings/decimal.c
@@ -1517,9 +1517,10 @@ decimal_round(decimal_t *from, decimal_t *to, int scale,
dec1 *p0= buf0+intg0+max(frac1, frac0);
dec1 *p1= buf1+intg1+max(frac1, frac0);
- to->buf[0]= 0;
while (buf0 < p0)
*(--p1) = *(--p0);
+ if (unlikely(intg1 > intg0))
+ to->buf[0]= 0;
intg0= intg1;
buf0=to->buf;