diff --git a/mrbgems/mruby-bigint/core/bigint.c b/mrbgems/mruby-bigint/core/bigint.c index 7b42c3935..40d59eb38 100644 --- a/mrbgems/mruby-bigint/core/bigint.c +++ b/mrbgems/mruby-bigint/core/bigint.c @@ -688,15 +688,16 @@ mpz_get_str(mrb_state *mrb, char *s, mrb_int sz, mrb_int base, mpz_t *x) char *se = s+sz; int xlen = digits(x); mp_limb *t = (mp_limb*)mrb_malloc(mrb, xlen*sizeof(mp_limb)); + mp_limb *tend = t + xlen; memcpy(t, x->p, xlen*sizeof(mp_limb)); mp_limb b2 = base; - const int blim = (sizeof(mp_limb)==sizeof(int))?(base<=10?4:3):(base<=10?9:5); + const int blim = (sizeof(mp_limb)==4)?(base<=10?4:3):(base<=10?9:5); for (int i=1; i= t) { mp_limb d0 = *d, d1; @@ -720,14 +721,14 @@ mpz_get_str(mrb_state *mrb, char *s, mrb_int sz, mrb_int base, mpz_t *x) } // check if number is zero - for (d = t; d < t + xlen; ++d) { + for (d = t; d < tend; d++) { if (*d != 0) break; - while (pssn < 0) { *s++ = '-';