From 407d4a75bb431a24b02e19239e830213e4cd5476 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 9 Jul 2005 08:26:29 +0000 Subject: [PATCH] * data/yacc.c (yyparse): Undo previous patch. Instead, set yylsp[0] and yyvsp[0] only if the initial action sets yylloc and yylval, respectively. --- ChangeLog | 4 ++++ data/yacc.c | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index b5f44ada..43e323be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-07-09 Paul Eggert + * data/yacc.c (yyparse): Undo previous patch. Instead, + set yylsp[0] and yyvsp[0] only if the initial action + sets yylloc and yylval, respectively. + * 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 diff --git a/data/yacc.c b/data/yacc.c index ebb0c9be..945d0960 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -859,16 +859,20 @@ b4_c_function_def([yyparse], [int], b4_parse_param) #endif ]]) m4_ifdef([b4_initial_action], [ -m4_pushdef([b4_at_dollar], [[yylsp[0]]])dnl -m4_pushdef([b4_dollar_dollar], [[yyvsp[0]]])dnl +m4_pushdef([b4_at_dollar], [m4_define([b4_at_dollar_used])yylloc])dnl +m4_pushdef([b4_dollar_dollar], [m4_define([b4_dollar_dollar_used])yylval])dnl /* User initialization code. */ b4_initial_action m4_popdef([b4_dollar_dollar])dnl m4_popdef([b4_at_dollar])dnl /* Line __line__ of yacc.c. */ -b4_syncline([@oline@], [@ofile@])])dnl -[ - goto yysetstate; +b4_syncline([@oline@], [@ofile@]) +])dnl +m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval; +]])dnl +m4_ifdef([b4_at_dollar_used], [[ yylsp[0] = yylloc; +]])dnl +[ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | -- 2.45.2