diff --git a/src/bigint.c b/src/bigint.c index 2f29d9fc5..480c2826a 100644 --- a/src/bigint.c +++ b/src/bigint.c @@ -359,7 +359,7 @@ lzb(mp_limb a) /* c1 = a>>n */ /* n must be < DIGITBITS */ static void -urshift(mrb_state *mrb, mpz_t *c1, mpz_t *a, int n) +urshift(mrb_state *mrb, mpz_t *c1, mpz_t *a, size_t n) { mp_limb cc = 0; mrb_assert(n < DIGITBITS); @@ -382,7 +382,7 @@ urshift(mrb_state *mrb, mpz_t *c1, mpz_t *a, int n) /* c1 = a<mp, base); + mrb_int len = mpz_sizeinbase(&b->mp, (int)base); mrb_value str = mrb_str_new(mrb, NULL, len+2); mpz_get_str(mrb, RSTRING_PTR(str), len, base, &b->mp); RSTR_SET_LEN(RSTRING(str), strlen(RSTRING_PTR(str)));