diff options
Diffstat (limited to 'numeric.c')
-rw-r--r-- | numeric.c | 36 |
1 files changed, 1 insertions, 35 deletions
@@ -253,12 +253,6 @@ coerce_rescue(VALUE *x) return Qnil; /* dummy */ } -static VALUE -coerce_rescue_quiet(VALUE arg, VALUE errinfo) -{ - return Qundef; -} - static int do_coerce(VALUE *x, VALUE *y, int err) { @@ -1870,34 +1864,6 @@ ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl) } } -static VALUE -num_step_compare_with_zero(VALUE num) -{ - VALUE zero = INT2FIX(0); - return rb_check_funcall(num, '>', 1, &zero); -} - -static int -num_step_negative_p(VALUE num) -{ - const ID mid = '<'; - VALUE r; - - if (FIXNUM_P(num)) { - if (method_basic_p(rb_cFixnum)) - return (SIGNED_VALUE)num < 0; - } - else if (RB_TYPE_P(num, T_BIGNUM)) { - if (method_basic_p(rb_cBignum)) - return RBIGNUM_NEGATIVE_P(num); - } - r = rb_rescue(num_step_compare_with_zero, num, coerce_rescue_quiet, Qnil); - if (r == Qundef) { - coerce_failed(num, INT2FIX(0)); - } - return !RTEST(r); -} - static int num_step_scan_args(int argc, const VALUE *argv, VALUE *to, VALUE *step) { @@ -1932,7 +1898,7 @@ num_step_scan_args(int argc, const VALUE *argv, VALUE *to, VALUE *step) if (NIL_P(*step)) { *step = INT2FIX(1); } - desc = num_step_negative_p(*step); + desc = !positive_int_p(*step); if (NIL_P(*to)) { *to = desc ? DBL2NUM(-INFINITY) : DBL2NUM(INFINITY); } |