summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrbgems/mruby-rational/src/rational.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c
index be9b5eaf9..1577a7045 100644
--- a/mrbgems/mruby-rational/src/rational.c
+++ b/mrbgems/mruby-rational/src/rational.c
@@ -403,7 +403,9 @@ static mrb_value
rational_minus(mrb_state *mrb, mrb_value x)
{
struct mrb_rational *p = rational_ptr(mrb, x);
- return rational_new(mrb, -p->numerator, p->denominator);
+ mrb_int n = p->numerator;
+ if (n == MRB_INT_MIN) rat_overflow(mrb);
+ return rational_new(mrb, -n, p->denominator);
}
mrb_int mrb_num_div_int(mrb_state*, mrb_int, mrb_int);