From 470da1eda075017d72ed085bcd0b9303080334f3 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Thu, 17 May 2012 09:32:23 +0900 Subject: redefine POST/NEG FIXABLE using INT_MIN/MAX --- include/mruby/numeric.h | 6 ++---- 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 #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)); -- cgit v1.2.3