diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-05-17 09:32:23 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-05-17 09:32:23 +0900 |
| commit | 470da1eda075017d72ed085bcd0b9303080334f3 (patch) | |
| tree | f4c2dd487aa817e992bc7428241c22de3e554e58 | |
| parent | db20b4e0638ca275d9ecab43305525f41809cbdd (diff) | |
| download | mruby-470da1eda075017d72ed085bcd0b9303080334f3.tar.gz mruby-470da1eda075017d72ed085bcd0b9303080334f3.zip | |
redefine POST/NEG FIXABLE using INT_MIN/MAX
| -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)); |
