diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index 9b2651c33..9421067e3 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -309,7 +309,7 @@ mrb_rational_new(mrb_state *mrb, mrb_int nume, mrb_int deno) static mrb_value int_lshift(mrb_state *mrb, mrb_value v, mrb_int n) { - if (mrb_integer_p(v)) { + if (mrb_integer_p(v) && n < (mrb_int)sizeof(long) * CHAR_BIT) { mrb_float f = (mrb_float)mrb_integer(v); f *= 1L<