mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Improve tests for stack overflow in GLR parser.
Problem reported by twlevo@xs4all.nl. * data/glr.c (struct yyGLRStack): Remove yyerrflag member. All uses removed. (yyStackOverflow): Just longjmp, but with value 2 so that caller can handle the problem. (YYCHK1): Use goto (a la yacc.c) rather than setting a flag. (yyparse): New local variable yyresult to record the result. Use result of setjmp to set it, rather than storing itinto struct. (yyDone): Remove label. (yyacceptlab, yyabortlab, yyoverflowlab, yyreturn): New labels, to mimic yacc.c. Do not discard lookahead if it's EOF (possible if YYABORT is used). * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Exit with yyparse status; put status > 1 into diagnostic. Check that status==2 works. * tests/calc.at, tests/cxx-type.at, tests/glr-regression.at: Use exit status 3 for failure to open (which shouldn't happen).
This commit is contained in:
@@ -288,7 +288,7 @@ power (int base, int exponent)
|
||||
{
|
||||
int res = 1;
|
||||
if (exponent < 0)
|
||||
exit (1);
|
||||
exit (3);
|
||||
for (/* Niente */; exponent; --exponent)
|
||||
res *= base;
|
||||
return res;
|
||||
@@ -315,7 +315,7 @@ main (int argc, const char **argv)
|
||||
if (!yyin)
|
||||
{
|
||||
perror (argv[1]);
|
||||
exit (1);
|
||||
return 3;
|
||||
}
|
||||
|
||||
]AT_LALR1_CC_IF([], [m4_bmatch([$4], [%debug],
|
||||
|
||||
Reference in New Issue
Block a user