summaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-20 07:11:44 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-20 07:11:44 +0000
commit67688bf178e1fc64ff5af1b07ce834ffb3a84a38 (patch)
treed84ee3ea9c21646d38e396bb875c4bcc591a81f4 /range.c
parentd874c0dff914c7d057c86657a9961b9cc68bf5fa (diff)
downloadruby-67688bf178e1fc64ff5af1b07ce834ffb3a84a38.tar.gz
ruby-67688bf178e1fc64ff5af1b07ce834ffb3a84a38.tar.xz
ruby-67688bf178e1fc64ff5af1b07ce834ffb3a84a38.zip
* parse.y (new_yield): distinguish "yield 1,2" and "yield [1,2]".
[ruby-dev:20360] * eval.c (rb_eval): support new_yield() change. * variable.c (rb_const_get_0): warn for Foo::BAR when BAR is a toplevel constant (i.e. a constant defined under Object). [ruby-list:36935] * parse.y (no_blockarg): separate no block argument check and ret_args argument processing. * range.c (rb_range_beg_len): out_of_range check after adjusting end point. [ruby-dev:20370] * parse.y (call_args): the first argument to arg_cancat() should be NODE_LIST. [ruby-core:01151] * eval.c (rb_eval): should dispatch based on ID type. * eval.c (rb_yield_0): should restore scope_vmode during yield. [ruby-dev:20361] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r--range.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/range.c b/range.c
index da8eeda51..9a73c867a 100644
--- a/range.c
+++ b/range.c
@@ -377,13 +377,9 @@ rb_range_beg_len(range, begp, lenp, len, err)
if (end > len)
end = len;
}
- if (end < 0) {
- end += len;
- if (end < 0) {
- goto out_of_range;
- }
- }
+ if (end < 0) end += len;
if (!EXCL(range)) end++; /* include end point */
+ if (end < 0) goto out_of_range;
len = end - beg;
if (len < 0) goto out_of_range;