summaryrefslogtreecommitdiff
path: root/strings/decimal.c
diff options
context:
space:
mode:
Diffstat (limited to 'strings/decimal.c')
-rw-r--r--strings/decimal.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/strings/decimal.c b/strings/decimal.c
index ce00b9770b3..f536bdb1d6b 100644
--- a/strings/decimal.c
+++ b/strings/decimal.c
@@ -1986,7 +1986,11 @@ int decimal_mul(decimal_t *from1, decimal_t *from2, decimal_t *to)
carry+=hi;
}
for (; carry; buf0--)
+ {
+ if (buf0 < to->buf)
+ return E_DEC_OVERFLOW;
ADD(*buf0, *buf0, 0, carry);
+ }
}
/* Now we have to check for -0.000 case */
@@ -2018,7 +2022,7 @@ int decimal_mul(decimal_t *from1, decimal_t *from2, decimal_t *to)
if (to->buf < buf1)
{
dec1 *cur_d= to->buf;
- for (; d_to_move; d_to_move--, cur_d++, buf1++)
+ for (; d_to_move--; cur_d++, buf1++)
*cur_d= *buf1;
}
return error;