diff --git a/mrbgems/mruby-numeric-ext/src/numeric_ext.c b/mrbgems/mruby-numeric-ext/src/numeric_ext.c index 59d122579..a29f0a4bd 100644 --- a/mrbgems/mruby-numeric-ext/src/numeric_ext.c +++ b/mrbgems/mruby-numeric-ext/src/numeric_ext.c @@ -162,7 +162,11 @@ int_lcm(mrb_state *mrb, mrb_value x) if (a < 0) a = -a; if (b < 0) b = -b; - return mrb_int_value(mrb, (a / gcd_val) * b); + mrb_int lcm_val; + if (mrb_int_mul_overflow(a / gcd_val, b, &lcm_val)) { + mrb_int_overflow(mrb, "lcm"); + } + return mrb_int_value(mrb, lcm_val); } /*