From 996417cabfd4f9422ab00530874837e2cf6a2cf6 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 19 Nov 2015 03:12:42 +0900 Subject: integer range check was moved to mrb_flo_to_fixnum(); ref #3025 --- src/numeric.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/numeric.c b/src/numeric.c index 41820ff5c..bd90f6168 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -964,7 +964,12 @@ mrb_flo_to_fixnum(mrb_state *mrb, mrb_value x) if (isnan(d)) { mrb_raise(mrb, E_FLOATDOMAIN_ERROR, "NaN"); } - z = (mrb_int)d; + if (FIXABLE(d)) { + z = (mrb_int)d; + } + else { + mrb_raisef(mrb, E_ARGUMENT_ERROR, "number (%S) too big for integer", x); + } } return mrb_fixnum_value(z); } -- cgit v1.2.3