]> git.saurik.com Git - bison.git/commitdiff
* data/glr.c (yyparse): Don't assume that the initial calls
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 17 Jul 2005 07:30:38 +0000 (07:30 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 17 Jul 2005 07:30:38 +0000 (07:30 +0000)
to YYMALLOC succeed; in that case, yyparse incorrectly returned 0.
Print a stack-overflow message and fail instead.
Initialize the line-number information before creating the stack,
so that the stack-overflow message can report line zero safely.

ChangeLog
data/glr.c

index f1c3691cbf917b4ebc001b3c103d872da525cffd..1bb4543a3f325e9832c048361dbe90c562747e9b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-07-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c (yyparse): Don't assume that the initial calls
+       to YYMALLOC succeed; in that case, yyparse incorrectly returned 0.
+       Print a stack-overflow message and fail instead.
+       Initialize the line-number information before creating the stack,
+       so that the stack-overflow message can report line zero safely.
+
 2005-07-14  Paul Eggert  <eggert@cs.ucla.edu>
 
        Fix problems reported by twlevo@xs4all.nl.
index f9835adabdfc147a303668e298afb8fc2e404671..f1cf4dc90c2833d02554bb7665bb41e4ed0bfda0 100644 (file)
@@ -1967,14 +1967,6 @@ yyrecoverSyntaxError (yyGLRStack* yystack,
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yytoken = YYEMPTY;
-
-  if (setjmp (yystack.yyexception_buffer) != 0)
-    goto yyDone;
-
-  if (! yyinitGLRStack (&yystack, YYINITDEPTH))
-    goto yyDone;
-  yystack.yytokenp = &yytoken;
-
   yylval = yyval_default;
 ]b4_location_if([
 #if YYLTYPE_IS_TRIVIAL
@@ -1992,6 +1984,11 @@ m4_popdef([b4_at_dollar])dnl
 /* Line __line__ of glr.c.  */
 b4_syncline([@oline@], [@ofile@])])dnl
 [
+  if (setjmp (yystack.yyexception_buffer) != 0)
+    goto yyDone;
+  if (! yyinitGLRStack (&yystack, YYINITDEPTH))
+    yyStackOverflow (&yystack]b4_lpure_args[);
+  yystack.yytokenp = &yytoken;
   yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[);
   yyposn = 0;