diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-24 18:54:52 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-24 18:54:52 +0000 |
commit | 848f840d47ead505de70a9de6287332f008d0047 (patch) | |
tree | 4fd02de14d300845364775e9472f9ffc2f8006f5 | |
parent | d08534a5fcbaee9007c083400de061de4a4fad32 (diff) | |
download | ruby-848f840d47ead505de70a9de6287332f008d0047.tar.gz ruby-848f840d47ead505de70a9de6287332f008d0047.tar.xz ruby-848f840d47ead505de70a9de6287332f008d0047.zip |
* compile.c (iseq_compile_each): fix stack consistency bug.
a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | bootstraptest/test_syntax.rb | 9 | ||||
-rw-r--r-- | compile.c | 2 |
3 files changed, 15 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Tue Dec 25 03:51:55 2007 Koichi Sasada <ko1@atdot.net> + + * compile.c (iseq_compile_each): fix stack consistency bug. + a patch from Yusuke ENDOH <mame AT tsg.ne.jp> + Tue Dec 25 03:19:47 2007 WATANABE Hirofumi <eban@ruby-lang.org> * tool/make-snapshot: must create configure and lex.c. diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb index 5fd948cdf..4be2f0cdd 100644 --- a/bootstraptest/test_syntax.rb +++ b/bootstraptest/test_syntax.rb @@ -681,3 +681,12 @@ assert_equal 'ok', %q{ end # direct }, '[ruby-core:14385]' +assert_equal 'ok', %q{ + counter = 2 + while true + counter -= 1 + break if counter == 0 + "#{next}" + end + :ok +} @@ -2973,7 +2973,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) if (iseq->compile_data->redo_label != 0) { /* next in while loop */ debugs("next in while\n"); - pop_after_throw = 1; + pop_after_throw = poped; goto next_by_throw; } else if (iseq->compile_data->end_label) { |