]> git.saurik.com Git - bison.git/blobdiff - tests/torture.at
* NEWS: Version 2.0b.
[bison.git] / tests / torture.at
index df20a346c7abe55d969570d78dda8677741e2faf..16425f6a5c3fa0876fa626e53c5205c04072ad18 100644 (file)
@@ -388,6 +388,8 @@ m4_define([AT_DATA_STACK_TORTURE],
 # exp:
 AT_DATA([input.y],
 [[%{
 # exp:
 AT_DATA([input.y],
 [[%{
+#include <errno.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 ]$1[
 #include <stdio.h>
 #include <stdlib.h>
 ]$1[
@@ -404,12 +406,8 @@ static void
 yyerror (const char *msg)
 {
   fprintf (stderr, "%s\n", msg);
 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)
 {
 static int
 yylex (void)
 {
@@ -422,9 +420,14 @@ yylex (void)
 int
 main (int argc, const char **argv)
 {
 int
 main (int argc, const char **argv)
 {
+  char *endp;
   if (argc != 2)
     abort ();
   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 ();
 }
   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 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
 
 
 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 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
 
 AT_CLEANUP