Skip to content

Commit 4fcb855

Browse files
committed
merges r26055 from trunk into ruby_1_9_1. This fixies ruby#3164.
-- * parse.y (dyna_pop_gen): pop dvars. [ruby-dev:39861] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@27596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent b67fbc0 commit 4fcb855

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

ChangeLog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Thu Dec 10 01:12:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
2+
3+
* parse.y (dyna_pop_gen): pop dvars. [ruby-dev:39861]
4+
15
Sat Dec 5 13:19:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
26

37
* configure.in: default ac_cv_prog_CC to CC.

bootstraptest/test_syntax.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,3 +877,10 @@ def x@; nil; end
877877
end
878878
end
879879
}, bug2415
880+
881+
assert_normal_exit %q{
882+
a {
883+
b {|c.d| }
884+
e
885+
}
886+
}, '[ruby-dev:39861]'

parse.y

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8951,13 +8951,10 @@ dyna_push_gen(struct parser_params *parser)
89518951
}
89528952

89538953
static void
8954-
dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs)
8954+
dyna_pop_1(struct parser_params *parser)
89558955
{
89568956
struct vtable *tmp;
89578957

8958-
while (lvtbl->args != lvargs) {
8959-
local_pop();
8960-
}
89618958
tmp = lvtbl->args;
89628959
lvtbl->args = lvtbl->args->prev;
89638960
vtable_free(tmp);
@@ -8966,6 +8963,20 @@ dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs)
89668963
vtable_free(tmp);
89678964
}
89688965

8966+
static void
8967+
dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs)
8968+
{
8969+
while (lvtbl->args != lvargs) {
8970+
dyna_pop_1(parser);
8971+
if (!lvtbl->args) {
8972+
struct local_vars *local = lvtbl->prev;
8973+
xfree(lvtbl);
8974+
lvtbl = local;
8975+
}
8976+
}
8977+
dyna_pop_1(parser);
8978+
}
8979+
89698980
static int
89708981
dyna_in_block_gen(struct parser_params *parser)
89718982
{

0 commit comments

Comments
 (0)