summaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-02 05:22:17 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-02 05:22:17 +0000
commit76fcbb120c832eb9e49ec81c29d7a3d87f05f976 (patch)
treeb49720e3b3adf4e78d35750bf7dc166496b4d3c4 /range.c
parent6de2e5e92326003c60bf8a8bdba36b969b4fd27e (diff)
downloadruby-76fcbb120c832eb9e49ec81c29d7a3d87f05f976.tar.gz
ruby-76fcbb120c832eb9e49ec81c29d7a3d87f05f976.tar.xz
ruby-76fcbb120c832eb9e49ec81c29d7a3d87f05f976.zip
* range.c (range_step): step may be bignum.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@16265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r--range.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/range.c b/range.c
index ae172be4e..01524e15e 100644
--- a/range.c
+++ b/range.c
@@ -310,8 +310,11 @@ range_step(int argc, VALUE *argv, VALUE range)
rb_scan_args(argc, argv, "01", &step);
tmp = rb_check_to_integer(step, "to_int");
if (!NIL_P(tmp)) {
+ if (FIXNUM_P(tmp))
+ unit = FIX2LONG(tmp);
+ else
+ unit = rb_cmpint(tmp, step, INT2FIX(0));
step = tmp;
- unit = NUM2LONG(step);
}
else {
tmp = rb_funcall(rb_funcall(b, '+', 1, step), '-', 1, b);