aboutsummaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
Diffstat (limited to 'range.c')
-rw-r--r--range.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/range.c b/range.c
index f1ff5a74bb..684db357a8 100644
--- a/range.c
+++ b/range.c
@@ -314,11 +314,11 @@ range_step(argc, argv, range)
if (unit < 0) {
rb_raise(rb_eArgError, "step can't be negative");
}
+ if (unit == 0) rb_raise(rb_eArgError, "step can't be 0");
if (FIXNUM_P(b) && FIXNUM_P(e)) { /* fixnums are special */
long end = FIX2LONG(e);
long i;
- if (unit == 0) rb_raise(rb_eArgError, "step can't be 0");
if (!EXCL(range)) end += 1;
for (i=FIX2LONG(b); i<end; i+=unit) {
rb_yield(LONG2NUM(i));
@@ -332,7 +332,6 @@ range_step(argc, argv, range)
long iter[2];
b = tmp;
- if (unit == 0) rb_raise(rb_eArgError, "step can't be 0");
args[0] = b; args[1] = e; args[2] = range;
iter[0] = 1; iter[1] = unit;
rb_iterate((VALUE(*)_((VALUE)))str_step, (VALUE)args, step_i,
@@ -350,12 +349,10 @@ range_step(argc, argv, range)
else {
long args[2];
- if (unit == 0) rb_raise(rb_eArgError, "step can't be 0");
if (!rb_respond_to(b, id_succ)) {
rb_raise(rb_eTypeError, "can't iterate from %s",
rb_obj_classname(b));
}
-
args[0] = 1;
args[1] = unit;
range_each_func(range, step_i, b, e, args);