X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/0fb669f9d648dfdd7a39478a6b658511455ae966..040984073a54b4c603172be3c3f44b908ea5deb9:/tests/torture.at diff --git a/tests/torture.at b/tests/torture.at index df20a346..16425f6a 100644 --- a/tests/torture.at +++ b/tests/torture.at @@ -388,6 +388,8 @@ m4_define([AT_DATA_STACK_TORTURE], # exp: AT_DATA([input.y], [[%{ +#include +#include #include #include ]$1[ @@ -404,12 +406,8 @@ static void yyerror (const char *msg) { fprintf (stderr, "%s\n", msg); - exit (1); } -/* There are YYLVAL_MAX of WAIT_FOR_EOFs. */ -unsigned int yylval_max; - static int yylex (void) { @@ -422,9 +420,14 @@ yylex (void) int main (int argc, const char **argv) { + char *endp; if (argc != 2) abort (); - yylval = atoi (argv[1]); + yylval = strtol (argv[1], &endp, 10); + if (! (argv[1] != endp + && 0 <= yylval && yylval <= INT_MAX + && errno != ERANGE)) + abort (); yydebug = 1; return yyparse (); } @@ -452,7 +455,7 @@ AT_PARSER_CHECK([./input 20], 0, [], [ignore]) AT_PARSER_CHECK([./input 900], 0, [], [ignore]) # Fails: beyond the limit of 10,000 (which we don't reach anyway since we # multiply by two starting at 200 => 5120 is the last possible). -AT_PARSER_CHECK([./input 10000], 1, [], [ignore]) +AT_PARSER_CHECK([./input 10000], 2, [], [ignore]) AT_CLEANUP @@ -473,6 +476,6 @@ AT_PARSER_CHECK([./input 20], 0, [], [ignore]) AT_PARSER_CHECK([./input 900], 0, [], [ignore]) # Fails: beyond the limit of 10,000 (which we don't reach anyway since we # multiply by two starting at 200 => 5120 is the possible). -AT_PARSER_CHECK([./input 10000], 1, [], [ignore]) +AT_PARSER_CHECK([./input 10000], 2, [], [ignore]) AT_CLEANUP