[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]