]> git.saurik.com Git - bison.git/commitdiff
* data/glr.c (yyFail): Drastically simplify; since the format argument
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 6 Jul 2005 04:12:23 +0000 (04:12 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 6 Jul 2005 04:12:23 +0000 (04:12 +0000)
never had any % directives, we can simply pass it to yyerror.
(yyparse): Use "t a; a=b;" rather than "t a = b;" when a will
be modified later, as that is the usual style in glr.c.

ChangeLog
data/glr.c

index c3b7ab3f0525c7c5462bfc0b359af861e365fcac..0c4f8132d2652a1efd3967f23f33d69298e8aea4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2005-07-05  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * data/glr.c (yyFail): Drastically simplify; since the format argument
+       never had any % directives, we can simply pass it to yyerror.
+       (yyparse): Use "t a; a=b;" rather than "t a = b;" when a will
+       be modified later, as that is the usual style in glr.c.
+       Problems reported by Paul Hilfinger.
+
        Rewrite GLR parser to catch more buffer overrun, storage exhaustion,
        and size overflow errors.
        * data/glr.c: Include <stdio.h> etc. after user prolog, not before,
index 00b36baebcb93ed6e6153914baf465ca4ef0fccd..d39b5e0c899352de6b1a854782f61e277a582a40 100644 (file)
@@ -678,37 +678,11 @@ struct yyGLRStack {
 static void yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[);
 
 static void
-yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yyformat, ...)
+yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg)
 {
   yystack->yyerrflag = 1;
-  if (yyformat != NULL)
-    {
-      char yysmallbuf[1024];
-      char const *yymsg = yysmallbuf;
-      char *yybigbuf = NULL;
-      int yymsglen;
-      va_list yyap;
-
-      va_start (yyap, yyformat);
-      yymsglen = vsnprintf (yysmallbuf, sizeof yysmallbuf, yyformat, yyap);
-      va_end (yyap);
-
-      if (yymsglen < 0)
-       yymsg = "message is too long to be printed";
-      else if (sizeof yysmallbuf <= yymsglen && yymsglen < YYSIZEMAX)
-       {
-         size_t yybigsize = yymsglen;
-         yybigsize++;
-         yymsg = yybigbuf = YYMALLOC (yybigsize);
-
-         va_start (yyap, yyformat);
-         vsnprintf (yybigbuf, yybigsize, yyformat, yyap);
-         va_end (yyap);
-       }
-
-      yyerror (]b4_yyerror_args[yymsg);
-      YYFREE (yybigbuf);
-    }
+  if (yymsg != NULL)
+    yyerror (]b4_yyerror_args[yymsg);
   longjmp (yystack->yyexception_buffer, 1);
 }
 
@@ -1973,7 +1947,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack,
 
 ]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[
 {
-  yySymbol yytoken = YYEMPTY;
+  yySymbol yytoken;
   yyGLRStack yystack;
   size_t yyposn;
 ]b4_pure_if(
@@ -1989,6 +1963,8 @@ yyrecoverSyntaxError (yyGLRStack* yystack,
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
+  yytoken = YYEMPTY;
+
   if (setjmp (yystack.yyexception_buffer) != 0)
     goto yyDone;