From: Paul Eggert Date: Sun, 17 Jul 2005 07:30:38 +0000 (+0000) Subject: * data/glr.c (yyparse): Don't assume that the initial calls X-Git-Tag: BISON-2_1~85 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/15f40952f7696eab92570c3be352204242bb80b3?ds=sidebyside * 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. --- diff --git a/ChangeLog b/ChangeLog index f1c3691c..1bb4543a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-07-17 Paul Eggert + + * 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 Fix problems reported by twlevo@xs4all.nl. diff --git a/data/glr.c b/data/glr.c index f9835ada..f1cf4dc9 100644 --- a/data/glr.c +++ b/data/glr.c @@ -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;