From 7b2c68fd32ea4300131c34a6dfd346649fe78383 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 1 May 2008 14:43:24 +0000 Subject: * range.c (range_step): check if step can be converted to an integer. [ruby-dev:34558] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'range.c') diff --git a/range.c b/range.c index d81db5fff5..ae172be4e7 100644 --- a/range.c +++ b/range.c @@ -308,11 +308,13 @@ range_step(int argc, VALUE *argv, VALUE range) } else { rb_scan_args(argc, argv, "01", &step); - if (FIXNUM_P(step)) { + tmp = rb_check_to_integer(step, "to_int"); + if (!NIL_P(tmp)) { + step = tmp; unit = NUM2LONG(step); } else { - VALUE tmp = rb_funcall(rb_funcall(b, '+', 1, step), '-', 1, b); + tmp = rb_funcall(rb_funcall(b, '+', 1, step), '-', 1, b); unit = rb_cmpint(tmp, step, INT2FIX(0)); } } -- cgit v1.2.3