diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-26 09:54:10 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-26 09:54:10 +0900 |
| commit | 83fc915213b23b798ea1afef55fddc0836207a83 (patch) | |
| tree | 88509b29e278c185308ea676fa465ac4dbe97425 /src/object.c | |
| parent | 3c312782368e2854c75c56d2008a5cbd78b70dfa (diff) | |
| download | mruby-83fc915213b23b798ea1afef55fddc0836207a83.tar.gz mruby-83fc915213b23b798ea1afef55fddc0836207a83.zip | |
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.
Diffstat (limited to 'src/object.c')
| -rw-r--r-- | src/object.c | 7 |
1 files changed, 5 insertions, 2 deletions
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); |
