mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* compile.c (iseq_compile_each): validate argument expr of "next"
statement. * bootstraptest/test_syntax.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3b1c663ed9
commit
51ea2cf4e4
3 changed files with 16 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
Sat Jan 26 17:42:23 2008 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* compile.c (iseq_compile_each): validate argument expr of "next"
|
||||||
|
statement.
|
||||||
|
|
||||||
|
* bootstraptest/test_syntax.rb: add a test.
|
||||||
|
|
||||||
Sat Jan 26 17:22:46 2008 Koichi Sasada <ko1@atdot.net>
|
Sat Jan 26 17:22:46 2008 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* compile.c, compile.h: fix to calculate correct stack depth
|
* compile.c, compile.h: fix to calculate correct stack depth
|
||||||
|
|
|
@ -758,3 +758,11 @@ assert_equal 'ok', %q{
|
||||||
end
|
end
|
||||||
:ok
|
:ok
|
||||||
}, '[ruby-dev:32882]'
|
}, '[ruby-dev:32882]'
|
||||||
|
|
||||||
|
assert_equal "1\n2\n", %q{
|
||||||
|
i = 0
|
||||||
|
while i<2
|
||||||
|
i += 1
|
||||||
|
next p(i)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
|
@ -3044,6 +3044,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
|
||||||
LABEL *splabel = NEW_LABEL(0);
|
LABEL *splabel = NEW_LABEL(0);
|
||||||
debugs("next in while loop\n");
|
debugs("next in while loop\n");
|
||||||
ADD_LABEL(ret, splabel);
|
ADD_LABEL(ret, splabel);
|
||||||
|
COMPILE(ret, "next val/valid syntax?", node->nd_stts);
|
||||||
add_ensure_iseq(ret, iseq);
|
add_ensure_iseq(ret, iseq);
|
||||||
ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
|
ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
|
||||||
ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->start_label);
|
ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->start_label);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue