From aa5b7fbd8091afea2c176ae1c402fb0ff34eca7e Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 8 Feb 2021 21:18:50 +0900 Subject: `i_gcd()` does not work for `MRB_INT_MIN`. --- mrbgems/mruby-rational/src/rational.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index 9081c2eec..618ffa805 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -156,10 +156,10 @@ rational_new_i(mrb_state *mrb, mrb_int n, mrb_int d) if (d == 0) { rat_zerodiv(mrb); } - a = i_gcd(n, d); - if ((n == MRB_INT_MIN || d == MRB_INT_MIN) && a == -1) { + if (n == MRB_INT_MIN || d == MRB_INT_MIN) { rat_overflow(mrb); } + a = i_gcd(n, d); return rational_new(mrb, n/a, d/a); } -- cgit v1.2.3