]> git.saurik.com Git - bison.git/commitdiff
Fix a destructor bug reported by Wolfgang Spraul in
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 22 May 2005 05:20:01 +0000 (05:20 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 22 May 2005 05:20:01 +0000 (05:20 +0000)
<http://lists.gnu.org/archive/html/bug-bison/2005-05/msg00042.html>.
* data/yacc.c (yyabortlab): Don't call destructor, and
don't set yychar to EMPTY.
(yyoverflowlab): Don't call destructor.
(yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY.
* tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines,
since we no longer output the message "discarding lookahead token
end of input ()".

ChangeLog
data/yacc.c
tests/calc.at

index d82bb04f4591ae94f5068f8e429d2ee8d3033532..678bb6cdc09e16de8990c18d03ef7ba273bc4a97 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2005-05-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a destructor bug reported by Wolfgang Spraul in
+       <http://lists.gnu.org/archive/html/bug-bison/2005-05/msg00042.html>.
+       * data/yacc.c (yyabortlab): Don't call destructor, and
+       don't set yychar to EMPTY.
+       (yyoverflowlab): Don't call destructor.
+       (yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY.
+       * tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines,
+       since we no longer output the message "discarding lookahead token
+       end of input ()".
+
 2005-05-20  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>
 
        * data/glr.c (YY_SYMBOL_PRINT): Don't print newline at end to
@@ -15,7 +27,7 @@
 
        * tests/glr-regression.at: Add test for GLR merging error reported
        by M. Rosien.
-       
+
 2005-05-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        * COPYING, ChangeLog, GNUmakefile, HACKING, Makefile.am,
index e7a7537c7e31ebf63c4213cd7a7bfedc64e7521c..07568b95537359d7abfd714068bdf2fa76947468 100644 (file)
@@ -135,7 +135,7 @@ m4_changecom()
 m4_divert(0)dnl
 @output @output_parser_name@
 b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
-             [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004])[
+             [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])[
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
@@ -1296,9 +1296,6 @@ yyacceptlab:
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
 yyabortlab:
-  yydestruct (_("Error: discarding lookahead"),
-              yytoken, &yylval]b4_location_if([, &yylloc])[);
-  yychar = YYEMPTY;
   yyresult = 1;
   goto yyreturn;
 
@@ -1308,13 +1305,14 @@ yyabortlab:
 `----------------------------------------------*/
 yyoverflowlab:
   yyerror (]b4_yyerror_args[_("parser stack overflow"));
-  yydestruct (_("Error: discarding lookahead"),
-             yytoken, &yylval]b4_location_if([, &yylloc])[);
   yyresult = 2;
   /* Fall through.  */
 #endif
 
 yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct (_("Error: discarding lookahead"),
+                yytoken, &yylval]b4_location_if([, &yylloc])[);
   if (yyssp != yyss)
     for (;;)
       {
@@ -1337,7 +1335,7 @@ b4_epilogue
 m4_if(b4_defines_flag, 0, [],
 [@output @output_header_name@
 b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
-             [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004])
+             [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
index 97d1d9182298748920335ffecca207ea6b3a404f..db92f70019ec79b2c68e33087010e51d58be2cf8 100644 (file)
@@ -480,7 +480,7 @@ _AT_CHECK_CALC_ERROR([$1], [1],
                      [16],
                      [2.0: syntax error, unexpected '+'])
 # Exercise error messages with EOF: work on an empty file.
-_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5],
+_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [4],
                      [1.0: syntax error, unexpected end of input])
 
 # Exercise the error token: without it, we die at the first error,