summaryrefslogtreecommitdiff
path: root/add.c
diff options
context:
space:
mode:
Diffstat (limited to 'add.c')
-rw-r--r--add.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/add.c b/add.c
index 6e75eac51..9af0c3543 100644
--- a/add.c
+++ b/add.c
@@ -294,8 +294,11 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
if (difs)
{
cc = cprev << (BITS_PER_MP_LIMB - difs);
- cprev = cp[--ck];
- cc += cprev >> difs;
+ if (ck > 0)
+ {
+ cprev = cp[--ck];
+ cc += cprev >> difs;
+ }
}
else
cc = cp[--ck];
@@ -338,9 +341,9 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
if (ck < 0)
goto c_read;
cc = cprev << (BITS_PER_MP_LIMB - difs);
- if (--ck >= 0)
+ if (ck > 0)
{
- cprev = cp[ck];
+ cprev = cp[--ck];
cc += cprev >> difs;
}
}
@@ -389,6 +392,7 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
fb = 1;
goto rounding;
}
+ MPFR_ASSERTN(ck >= 0);
while (ck)
{
if (cp[--ck])