summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-05-17 09:32:23 +0900
committerYukihiro Matsumoto <[email protected]>2012-05-17 09:32:23 +0900
commit470da1eda075017d72ed085bcd0b9303080334f3 (patch)
treef4c2dd487aa817e992bc7428241c22de3e554e58
parentdb20b4e0638ca275d9ecab43305525f41809cbdd (diff)
downloadmruby-470da1eda075017d72ed085bcd0b9303080334f3.tar.gz
mruby-470da1eda075017d72ed085bcd0b9303080334f3.zip
redefine POST/NEG FIXABLE using INT_MIN/MAX
-rw-r--r--include/mruby/numeric.h6
-rw-r--r--src/object.c3
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));