aboutsummaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-04 02:58:45 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-04 02:58:45 +0000
commit367de8b97ba2e446ab7828c1f6629d1610c24123 (patch)
tree57d614a85c249c770f26fa8eb6d359267d12243b /range.c
parenta7999ab13c234001c0f52e09f409f1a694073bb4 (diff)
downloadruby-367de8b97ba2e446ab7828c1f6629d1610c24123.tar.gz
* numeric.c (ruby_float_step): extracted from num_step().
* range.c (range_step): uses ruby_float_step() for float range. [ruby-dev:37691] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r--range.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/range.c b/range.c
index 0e9b390c39..bcbb9d9218 100644
--- a/range.c
+++ b/range.c
@@ -267,6 +267,8 @@ step_i(VALUE i, void *arg)
return Qnil;
}
+extern int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl);
+
/*
* call-seq:
* rng.step(n=1) {| obj | block } => rng
@@ -334,6 +336,9 @@ range_step(int argc, VALUE *argv, VALUE range)
}
}
+ else if (ruby_float_step(b, e, step, EXCL(range))) {
+ /* done */
+ }
else if (rb_obj_is_kind_of(b, rb_cNumeric) ||
!NIL_P(rb_check_to_integer(b, "to_int")) ||
!NIL_P(rb_check_to_integer(e, "to_int"))) {