* data/yacc.c (yyparse): In the initial action, set

yylsp[0] and yyvsp[0] rather than yylloc and yylval.
This avoids the use of undefined variables if the initial
action does not set yylloc and/or yylval.
This commit is contained in:
Paul Eggert
2005-07-09 07:14:18 +00:00
parent 6770ae09d3
commit 34160ec4ec
2 changed files with 10 additions and 6 deletions

View File

@@ -1,3 +1,10 @@
2005-07-09 Paul Eggert <eggert@cs.ucla.edu>
* data/yacc.c (yyparse): In the initial action, set
yylsp[0] and yyvsp[0] rather than yylloc and yylval.
This avoids the use of undefined variables if the initial
action does not set yylloc and/or yylval.
2005-07-07 Paul Eggert <eggert@cs.ucla.edu>
* examples/calc++/calc++-driver.cc, examples/calc++/calc++-driver.hh:

View File

@@ -859,8 +859,8 @@ b4_c_function_def([yyparse], [int], b4_parse_param)
#endif
]])
m4_ifdef([b4_initial_action], [
m4_pushdef([b4_at_dollar], [yylloc])dnl
m4_pushdef([b4_dollar_dollar], [yylval])dnl
m4_pushdef([b4_at_dollar], [[yylsp[0]]])dnl
m4_pushdef([b4_dollar_dollar], [[yyvsp[0]]])dnl
/* User initialization code. */
b4_initial_action
m4_popdef([b4_dollar_dollar])dnl
@@ -868,10 +868,7 @@ m4_popdef([b4_at_dollar])dnl
/* Line __line__ of yacc.c. */
b4_syncline([@oline@], [@ofile@])])dnl
[
yyvsp[0] = yylval;
]b4_location_if([[ yylsp[0] = yylloc;
]])
[ goto yysetstate;
goto yysetstate;
/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate. |