summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-rational/src/rational.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-02-08 21:18:50 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-02-08 21:18:50 +0900
commitaa5b7fbd8091afea2c176ae1c402fb0ff34eca7e (patch)
tree5c2826581385caf805e2d18c3aed92692ecc89e0 /mrbgems/mruby-rational/src/rational.c
parentdb1172b48cd5c3a21655267277ffb53f567dd4ef (diff)
downloadmruby-aa5b7fbd8091afea2c176ae1c402fb0ff34eca7e.tar.gz
mruby-aa5b7fbd8091afea2c176ae1c402fb0ff34eca7e.zip
`i_gcd()` does not work for `MRB_INT_MIN`.
Diffstat (limited to 'mrbgems/mruby-rational/src/rational.c')
-rw-r--r--mrbgems/mruby-rational/src/rational.c4
1 files 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);
}