From af0dedd47e5d45a6903ee8e786d15002fd3aca72 Mon Sep 17 00:00:00 2001 From: matz Date: Sun, 9 Sep 2007 16:11:28 +0000 Subject: * range.c (range_step): fixed integer overflow. [ruby-dev:31763] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@13422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'range.c') diff --git a/range.c b/range.c index 41c1cf088..f5a8d15f5 100644 --- a/range.c +++ b/range.c @@ -332,8 +332,11 @@ range_step(int argc, VALUE *argv, VALUE range) if (!EXCL(range)) end += 1; - for (i = FIX2LONG(b); i < end; i += unit) { + i = FIX2LONG(b); + while (i < end) { rb_yield(LONG2NUM(i)); + if (i + unit < i) break; + i += unit; } } else { -- cgit