diff options
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -1445,7 +1445,9 @@ bary_add_one(BDIGIT *ds, size_t n) { size_t i; for (i = 0; i < n; i++) { - ds[i] = BIGLO(ds[i]+1); + BDIGIT_DBL n = ds[i]; + n += 1; + ds[i] = BIGLO(n); if (ds[i] != 0) return 0; } @@ -5271,8 +5273,12 @@ big2dbl(VALUE x) } } if (carry) { - dl &= BDIGMAX << bits; - dl = BIGLO(dl + ((BDIGIT)1 << bits)); + BDIGIT mask = BDIGMAX; + BDIGIT bit = 1; + mask <<= bits; + bit <<= bits; + dl &= mask; + dl |= bit; if (!dl) d += 1; } } |