From a8cd364ece004097430d8d8567e06f2283106444 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 17 Nov 2020 14:38:15 +0900 Subject: Detect overflow in `flo_shift()`. --- src/numeric.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/numeric.c') diff --git a/src/numeric.c b/src/numeric.c index dc763b7ff..fec79ffd1 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -610,7 +610,9 @@ flo_shift(mrb_state *mrb, mrb_value x, mrb_int width) val *= 2; } } - return mrb_int_value(mrb, (mrb_int)val); + if (FIXABLE_FLOAT(val)) + return mrb_int_value(mrb, (mrb_int)val); + return mrb_float_value(mrb, val); } static mrb_value -- cgit v1.2.3