bug 434350: filename buffer too small.
authorkvigor <kvigor@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 19 Jun 2001 17:16:40 +0000 (17:16 +0000)
committerkvigor <kvigor@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 19 Jun 2001 17:16:40 +0000 (17:16 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@905 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/SDCCBBlock.c
src/SDCCglobl.h
src/SDCCglue.c
src/SDCCmain.c
src/z80/main.c

index c1a2b172cae44abca7c0209a86166f329cc9b54a..15470f19ac039f8081e05f7f3fd48a4e418ee25b 100644 (file)
@@ -103,16 +103,13 @@ FILE *appendDumpFile (int id) {
 
   if (!dumpFilesPtr->filePtr) {
     // not used before, create it
-    strcpy (buffer, srcFileName);
-    strcat (buffer, dumpFilesPtr->ext);
-    if (!(dumpFilesPtr->filePtr = fopen (buffer, "w"))) {
-      werror (E_FILE_OPEN_ERR, buffer);
+    strcpy (scratchFileName, srcFileName);
+    strcat (scratchFileName, dumpFilesPtr->ext);
+    if (!(dumpFilesPtr->filePtr = fopen (scratchFileName, "w"))) {
+      werror (E_FILE_OPEN_ERR, scratchFileName);
       exit (1);
     }
-    //dprintf ("created: %s\n", buffer);
-  } else {
-    //dprintf ("appended: %s%s\n", srcFileName, dumpFilesPtr->ext);
-  }
+  } 
   return dumpFilesPtr->filePtr;
 }
 
index 0d068c01b5eff59b52f556dc52b2dfeca7936205..e11160b51fd355a1fd86ecf8a9805a0cf47fd5df 100644 (file)
@@ -261,13 +261,6 @@ extern char *libFiles[128];
 extern int nlibFiles;
 extern bool verboseExec ;
 
-/*
-   void buildCmdLine(char *into, char **args, const char **cmds, 
-   const char *p1, const char *p2, 
-   const char *p3, const char **list);
-   int my_system (const char *cmd, char **cmd_argv);
- */
-
 void parseWithComma (char **, char *);
 
 /** Creates a temporary file a'la tmpfile which avoids the bugs
@@ -311,4 +304,9 @@ struct _dumpFiles {
 
 extern struct _dumpFiles dumpFiles[];
 
+/* Buffer which can be used to hold a file name; assume it will
+ * be trashed by any function call within SDCC.
+ */
+extern char scratchFileName[FILENAME_MAX];
+
 #endif
index a59053eb336e3515ec50a78945de75317e2bc58e..3fb487436f341d886eef80f967024daa700f7e5c 100644 (file)
@@ -1305,17 +1305,17 @@ glue ()
 
   if (!options.c1mode)
     {
-      sprintf (buffer, srcFileName);
-      strcat (buffer, port->assembler.file_ext);
+      sprintf (scratchFileName, srcFileName);
+      strcat (scratchFileName, port->assembler.file_ext);
     }
   else
     {
-      strcpy (buffer, options.out_name);
+      strcpy (scratchFileName, options.out_name);
     }
 
-  if (!(asmFile = fopen (buffer, "w")))
+  if (!(asmFile = fopen (scratchFileName, "w")))
     {
-      werror (E_FILE_OPEN_ERR, buffer);
+      werror (E_FILE_OPEN_ERR, scratchFileName);
       exit (1);
     }
 
index 298661d3f01f57292784a4f1c53e427db16de581..0f7b48751f492feeffe701034288b14614da45fc 100644 (file)
@@ -75,6 +75,9 @@ int nrelFiles = 0;
 bool verboseExec = FALSE;
 char *preOutName;
 
+// Globally accessible scratch buffer for file names.
+char scratchFileName[FILENAME_MAX];
+
 // In MSC VC6 default search path for exe's to path for this
 
 char DefaultExePath[128];
@@ -695,7 +698,6 @@ int
 parseCmdLine (int argc, char **argv)
 {
   int i;
-  char cdbfnbuf[50];
 
   /* go thru all whole command line */
   for (i = 1; i < argc; i++)
@@ -994,9 +996,9 @@ parseCmdLine (int argc, char **argv)
   /* if debug option is set the open the cdbFile */
   if (!options.nodebug && srcFileName)
     {
-      sprintf (cdbfnbuf, "%s.cdb", srcFileName);
-      if ((cdbFile = fopen (cdbfnbuf, "w")) == NULL)
-       werror (E_FILE_OPEN_ERR, cdbfnbuf);
+      sprintf (scratchFileName, "%s.cdb", srcFileName);
+      if ((cdbFile = fopen (scratchFileName, "w")) == NULL)
+       werror (E_FILE_OPEN_ERR, scratchFileName);
       else
        {
          /* add a module record */
@@ -1020,10 +1022,10 @@ linkEdit (char **envp)
     srcFileName = "temp";
 
   /* first we need to create the <filename>.lnk file */
-  sprintf (buffer, "%s.lnk", srcFileName);
-  if (!(lnkfile = fopen (buffer, "w")))
+  sprintf (scratchFileName, "%s.lnk", srcFileName);
+  if (!(lnkfile = fopen (scratchFileName, "w")))
     {
-      werror (E_FILE_OPEN_ERR, buffer);
+      werror (E_FILE_OPEN_ERR, scratchFileName);
       exit (1);
     }
 
@@ -1235,7 +1237,9 @@ preProcess (char **envp)
        }
 
       if (preProcOnly)
+      {
        exit (0);
+      }
     }
   else
     {
index c30d6c5736b30d1eaacbb6af3936b04870b910f6..4a7d3153e788e5cb45face4e370484dce4a96f14 100644 (file)
@@ -158,10 +158,10 @@ _gbz80_rgblink (void)
     sz = "a";
 
   /* first we need to create the <filename>.lnk file */
-  sprintf (buffer, "%s.lnk", sz);
-  if (!(lnkfile = fopen (buffer, "w")))
+  sprintf (scratchFileName, "%s.lnk", sz);
+  if (!(lnkfile = fopen (scratchFileName, "w")))
     {
-      werror (E_FILE_OPEN_ERR, buffer);
+      werror (E_FILE_OPEN_ERR, scratchFileName);
       exit (1);
     }