]> git.saurik.com Git - bison.git/commitdiff
(glr-regr2a.y): Try to dump core
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 18 Mar 2005 20:57:19 +0000 (20:57 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 18 Mar 2005 20:57:19 +0000 (20:57 +0000)
immediately if a data overrun has occurred; this may help us track
down what may be a spurious failure on MacOS.

tests/glr-regression.at

index e98a515614889354e7305e87104d742df5679710..32a39f259dfaef2f9dd9c4cc752f78ff88957939 100644 (file)
@@ -127,6 +127,7 @@ AT_DATA_GRAMMAR([glr-regr2a.y],
 
   #include <ctype.h>
   #include <stdio.h>
+  #include <stdlib.h>
   #include <string.h>
   int yylex (void);
   void yyerror (char const *);
@@ -155,11 +156,10 @@ var_list:
     { $$ = $1; }
   | var ',' var_list
     {
-      char buffer[50];
-      strcpy (buffer, $1);
-      strcat (buffer, ",");
-      strcat (buffer, $3);
-      $$ = strdup (buffer);
+      $$ = malloc (strlen ($1) + 1 + strlen ($3) + 1);
+      strcpy ($$, $1);
+      strcat ($$, ",");
+      strcat ($$, $3);
     }
   ;
 
@@ -182,8 +182,12 @@ yylex (void)
   default:
     break;
   }
-  fscanf (yyin, "%s", buf);
-  yylval = strdup (buf);
+  if (fscanf (yyin, "%49s", buf) != 1)
+    abort ();
+  if (sizeof buf - 1 <= strlen (buf))
+    abort ();
+  yylval = malloc (strlen (buf) + 1);
+  strcpy (yylval, buf);
   return 'V';
 }