summaryrefslogtreecommitdiff
path: root/range.c
diff options
context:
space:
mode:
Diffstat (limited to 'range.c')
-rw-r--r--range.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/range.c b/range.c
index d81db5fff5..ae172be4e7 100644
--- a/range.c
+++ b/range.c
@@ -308,11 +308,13 @@ range_step(int argc, VALUE *argv, VALUE range)
}
else {
rb_scan_args(argc, argv, "01", &step);
- if (FIXNUM_P(step)) {
+ tmp = rb_check_to_integer(step, "to_int");
+ if (!NIL_P(tmp)) {
+ step = tmp;
unit = NUM2LONG(step);
}
else {
- VALUE tmp = rb_funcall(rb_funcall(b, '+', 1, step), '-', 1, b);
+ tmp = rb_funcall(rb_funcall(b, '+', 1, step), '-', 1, b);
unit = rb_cmpint(tmp, step, INT2FIX(0));
}
}