summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-16 12:57:28 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-16 12:57:28 +0000
commitfd9c3fef0b2bb1e7110b17ff4157d384438ff58d (patch)
treed7f4c6a8744595972f6422f6047fd50c05b55c95 /parse.y
parent49884b5769c4fa059e448d531fd759c37380e5c5 (diff)
* parse.y (string_content, etc): counts of CMDARG_PUSH and POP were
inconsistent. [ruby-core:22637] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y10
1 files changed, 6 insertions, 4 deletions
diff --git a/parse.y b/parse.y
index 340a825387..f234ae36fd 100644
--- a/parse.y
+++ b/parse.y
@@ -4033,14 +4033,10 @@ string_content : tSTRING_CONTENT
$<node>$ = lex_strterm;
lex_strterm = 0;
lex_state = EXPR_BEG;
- COND_PUSH(0);
- CMDARG_PUSH(0);
}
compstmt '}'
{
lex_strterm = $<node>2;
- COND_LEXPOP();
- CMDARG_LEXPOP();
/*%%%*/
if ($3) $3->flags &= ~NODE_FL_NEWLINE;
$$ = new_evstr($3);
@@ -5873,6 +5869,8 @@ parser_parse_string(struct parser_params *parser, NODE *quote)
pushback(c);
return tSTRING_DVAR;
case '{':
+ COND_PUSH(0);
+ CMDARG_PUSH(0);
return tSTRING_DBEG;
}
tokadd('#');
@@ -6070,6 +6068,8 @@ parser_here_document(struct parser_params *parser, NODE *here)
pushback(c);
return tSTRING_DVAR;
case '{':
+ COND_PUSH(0);
+ CMDARG_PUSH(0);
return tSTRING_DBEG;
}
tokadd('#');
@@ -7314,6 +7314,8 @@ parser_yylex(struct parser_params *parser)
lex_state = EXPR_BEG;
lpar_beg = 0;
--paren_nest;
+ COND_PUSH(0);
+ CMDARG_PUSH(0);
return tLAMBEG;
}
if (IS_ARG() || lex_state == EXPR_END)