From 4aa87acfc955c05cfbf8e448e1b1903be76c52b3 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 30 Sep 2024 23:11:35 +0900 Subject: [PATCH] mruby-bigint (mpz_set_uint64): adjust reallocation size for uint64 The uint64_t value may fit in `mp_limb*n` where n is 1..4. --- mrbgems/mruby-bigint/core/bigint.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mrbgems/mruby-bigint/core/bigint.c b/mrbgems/mruby-bigint/core/bigint.c index c8aca7905..a74bb0911 100644 --- a/mrbgems/mruby-bigint/core/bigint.c +++ b/mrbgems/mruby-bigint/core/bigint.c @@ -96,8 +96,10 @@ mpz_set_int(mrb_state *mrb, mpz_t *y, mrb_int v) static void mpz_set_uint64(mrb_state *mrb, mpz_t *y, uint64_t u) { - const size_t len = sizeof(uint64_t) / sizeof(mp_limb); + size_t len = 0; + for (uint64_t u0=u; u0; u0>>=DIG_SIZE,len++) + ; y->sn = (u != 0); mpz_realloc(mrb, y, len); for (size_t i=0; i