From 83fc915213b23b798ea1afef55fddc0836207a83 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 26 May 2017 09:54:10 +0900 Subject: Add new range check macro FIXABLE_FLOAT(); ref #3652 When MRB_INT64, valid value range of mrb_int is bigger than double, which only has 53 bits significant precision. --- src/object.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/object.c') diff --git a/src/object.c b/src/object.c index d7f3f5a55..a78e9a443 100644 --- a/src/object.c +++ b/src/object.c @@ -534,8 +534,11 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base) switch (mrb_type(val)) { case MRB_TT_FLOAT: if (base != 0) goto arg_error; - if (FIXABLE(mrb_float(val))) { - break; + else { + mrb_float f = mrb_float(val); + if (FIXABLE_FLOAT(f)) { + break; + } } return mrb_flo_to_fixnum(mrb, val); -- cgit v1.2.3