diff options
| -rw-r--r-- | include/mruby/numeric.h | 6 | ||||
| -rw-r--r-- | src/object.c | 3 |
2 files changed, 3 insertions, 6 deletions
diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h index 8df0ce2b3..8f74bd498 100644 --- a/include/mruby/numeric.h +++ b/include/mruby/numeric.h @@ -10,10 +10,8 @@ #include <limits.h> #define RSHIFT(x,y) ((x)>>(int)(y)) -#define FIXNUM_MAX (LONG_MAX>>1) -#define FIXNUM_MIN RSHIFT((long)LONG_MIN,1) -#define POSFIXABLE(f) ((f) < FIXNUM_MAX+1) -#define NEGFIXABLE(f) ((f) >= FIXNUM_MIN) +#define POSFIXABLE(f) ((f) <= INT_MAX) +#define NEGFIXABLE(f) ((f) >= INT_MIN) #define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f)) mrb_value mrb_flt2big(mrb_state *mrb, mrb_float d); diff --git a/src/object.c b/src/object.c index 4e479a119..44968a8cc 100644 --- a/src/object.c +++ b/src/object.c @@ -565,8 +565,7 @@ 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 (mrb_float(val) <= (double)FIXNUM_MAX - && mrb_float(val) >= (double)FIXNUM_MIN) { + if (FIXABLE(mrb_float(val))) { break; } return mrb_flt2big(mrb, mrb_float(val)); |
