diff options
Diffstat (limited to 'mrbgems/mruby-range-ext/src')
| -rw-r--r-- | mrbgems/mruby-range-ext/src/range.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/mrbgems/mruby-range-ext/src/range.c b/mrbgems/mruby-range-ext/src/range.c index 4e17dac8c..9fbfd431f 100644 --- a/mrbgems/mruby-range-ext/src/range.c +++ b/mrbgems/mruby-range-ext/src/range.c @@ -7,7 +7,7 @@ r_le(mrb_state *mrb, mrb_value a, mrb_value b) mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */ /* output :a < b => -1, a = b => 0, a > b => +1 */ - if (mrb_type(r) == MRB_TT_FIXNUM) { + if (mrb_fixnum_p(r)) { mrb_int c = mrb_fixnum(r); if (c == 0 || c == -1) return TRUE; } @@ -21,11 +21,7 @@ r_lt(mrb_state *mrb, mrb_value a, mrb_value b) mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* output :a < b => -1, a = b => 0, a > b => +1 */ - if (mrb_type(r) == MRB_TT_FIXNUM) { - if (mrb_fixnum(r) == -1) return TRUE; - } - - return FALSE; + return mrb_fixnum_p(r) && mrb_fixnum(r) == -1; } /* @@ -82,16 +78,16 @@ mrb_range_cover(mrb_state *mrb, mrb_value range) static mrb_value mrb_range_first(mrb_state *mrb, mrb_value range) { - mrb_value num; + mrb_int num; mrb_value array; struct RRange *r = mrb_range_ptr(range); - if (mrb_get_args(mrb, "|o", &num) == 0) { + if (mrb_get_args(mrb, "|i", &num) == 0) { return r->edges->beg; } array = mrb_funcall(mrb, range, "to_a", 0); - return mrb_funcall(mrb, array, "first", 1, mrb_to_int(mrb, num)); + return mrb_funcall(mrb, array, "first", 1, mrb_fixnum_value(num)); } /* |
