From 494f6fcfcf66c8d880318d44edc3245d46f8be61 Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 2 May 2008 05:22:17 +0000 Subject: [PATCH] * range.c (range_step): step may be bignum. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ range.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5968192b40..7cb03675c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri May 2 14:10:17 2008 Yukihiro Matsumoto + + * range.c (range_step): step may be bignum. + Fri May 2 13:52:36 2008 Yukihiro Matsumoto * re.c (Init_Regexp): remove MatchData#select. [ruby-dev:34563] diff --git a/range.c b/range.c index ae172be4e7..01524e15e0 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);