diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-01 14:43:24 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-01 14:43:24 +0000 |
commit | ee6388949e4b3be562e349be999c8425aba9398c (patch) | |
tree | 1575fcb3d7920fcb964fdfa8876f85158a59d247 /range.c | |
parent | 1be42caa64d8261e7f91b2a4fbb620857e623155 (diff) | |
download | ruby-ee6388949e4b3be562e349be999c8425aba9398c.tar.gz ruby-ee6388949e4b3be562e349be999c8425aba9398c.tar.xz ruby-ee6388949e4b3be562e349be999c8425aba9398c.zip |
* range.c (range_step): check if step can be converted to an integer.
[ruby-dev:34558]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@16256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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)); } } |