ruby-changes:15678
From: yugui <ko1@a...>
Date: Mon, 3 May 2010 18:12:56 +0900 (JST)
Subject: [ruby-changes:15678] Ruby:r27596 (ruby_1_9_1): merges r26055 from trunk into ruby_1_9_1. This fixies #3164.
yugui 2010-05-03 18:12:36 +0900 (Mon, 03 May 2010) New Revision: 27596 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27596 Log: merges r26055 from trunk into ruby_1_9_1. This fixies #3164. -- * parse.y (dyna_pop_gen): pop dvars. [ruby-dev:39861] Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/bootstraptest/test_syntax.rb branches/ruby_1_9_1/parse.y Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 27595) +++ ruby_1_9_1/ChangeLog (revision 27596) @@ -1,3 +1,7 @@ +Thu Dec 10 01:12:55 2009 Nobuyoshi Nakada <nobu@r...> + + * parse.y (dyna_pop_gen): pop dvars. [ruby-dev:39861] + Sat Dec 5 13:19:29 2009 Nobuyoshi Nakada <nobu@r...> * configure.in: default ac_cv_prog_CC to CC. Index: ruby_1_9_1/bootstraptest/test_syntax.rb =================================================================== --- ruby_1_9_1/bootstraptest/test_syntax.rb (revision 27595) +++ ruby_1_9_1/bootstraptest/test_syntax.rb (revision 27596) @@ -877,3 +877,10 @@ end end }, bug2415 + +assert_normal_exit %q{ + a { + b {|c.d| } + e + } +}, '[ruby-dev:39861]' Index: ruby_1_9_1/parse.y =================================================================== --- ruby_1_9_1/parse.y (revision 27595) +++ ruby_1_9_1/parse.y (revision 27596) @@ -8951,13 +8951,10 @@ } static void -dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs) +dyna_pop_1(struct parser_params *parser) { struct vtable *tmp; - while (lvtbl->args != lvargs) { - local_pop(); - } tmp = lvtbl->args; lvtbl->args = lvtbl->args->prev; vtable_free(tmp); @@ -8966,6 +8963,20 @@ vtable_free(tmp); } +static void +dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs) +{ + while (lvtbl->args != lvargs) { + dyna_pop_1(parser); + if (!lvtbl->args) { + struct local_vars *local = lvtbl->prev; + xfree(lvtbl); + lvtbl = local; + } + } + dyna_pop_1(parser); +} + static int dyna_in_block_gen(struct parser_params *parser) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/