diff --git a/ChangeLog b/ChangeLog index cf5a0d5d47..7a70a042eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Oct 7 16:43:07 2002 Yukihiro Matsumoto + + * bignum.c (bigdivrem): bignum zero's len should not be 0. + Mon Oct 7 15:36:42 2002 Yukihiro Matsumoto * bignum.c (bigdivmod): wrong condition check for Bignum zero. diff --git a/bignum.c b/bignum.c index 0fa2233ebc..3cf4544cb4 100644 --- a/bignum.c +++ b/bignum.c @@ -1217,10 +1217,10 @@ bigdivrem(x, y, divp, modp) for (i = 0;i < j;i++) zds[i] = zds[i+ny]; RBIGNUM(*divp)->len = i; } - if (modp) { /* just normalize remainder */ + if (modp) { /* normalize remainder */ *modp = rb_big_clone(z); zds = BDIGITS(*modp); - while (ny-- && !zds[ny]); ++ny; + while (--ny && !zds[ny]); ++ny; if (dd) { t2 = 0; i = ny; while(i--) {