* 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.
This commit is contained in:
Paul Eggert
2005-07-17 07:30:38 +00:00
parent c70fdfcd20
commit 15f40952f7
2 changed files with 13 additions and 8 deletions

View 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;