mruby-bigint (mrb_bint_to_s): add uzero_p() check

This commit is contained in:
Yukihiro "Matz" Matsumoto
2024-10-24 07:20:24 +09:00
parent c5565a37ac
commit 0b96f7f2f7
+4 -3
View File
@@ -1776,10 +1776,11 @@ mrb_value
mrb_bint_to_s(mrb_state *mrb, mrb_value x, mrb_int base)
{
mpz_t a;
bint_as_mpz(RBIGINT(x), &a);
if (zero_p(&a) || a.sz == 0)
return mrb_str_new_lit(mrb, "0");
bint_as_mpz(RBIGINT(x), &a);
if (zero_p(&a) || uzero_p(&a)) {
return mrb_str_new_lit(mrb, "0");
}
size_t len = mpz_sizeinbase(&a, (int)base);
if (MRB_INT_MAX-2 < len) {
mrb_raise(mrb, E_ARGUMENT_ERROR, "too long string from Integer");