* src/SDCCicode.c (geniCodeAddressOf): fixed part of bug #840381
[fw/sdcc] / src / SDCCmain.c
index bf48bba681ea60cc92bbfcf785d7e37a1d37c962..a3e563e9e4c60b8cd4641e78e012780adaa08a1a 100644 (file)
@@ -1616,7 +1616,8 @@ linkEdit (char **envp)
       strncatz (scratchFileName,
                options.out_fmt ? ".S19" : ".ihx",
                sizeof(scratchFileName));
-      unlink (fullDstFileName);
+      if (strcmp (fullDstFileName, scratchFileName))
+       unlink (fullDstFileName);
       rename (scratchFileName, fullDstFileName);
 
       strncpyz (buffer, fullDstFileName, sizeof(buffer));
@@ -1631,13 +1632,15 @@ linkEdit (char **envp)
       strncatz (scratchFileName, ".map", sizeof(scratchFileName));
       *q = 0;
       strncatz(buffer, ".map", sizeof(buffer));
-      unlink (buffer);
+      if (strcmp (scratchFileName, buffer))
+       unlink (buffer);
       rename (scratchFileName, buffer);
       *p = 0;
       strncatz (scratchFileName, ".mem", sizeof(scratchFileName));
       *q = 0;
       strncatz(buffer, ".mem", sizeof(buffer));
-      unlink (buffer);
+      if (strcmp (scratchFileName, buffer))
+        unlink (buffer);
       rename (scratchFileName, buffer);
       if (options.debug)
         {
@@ -1645,12 +1648,14 @@ linkEdit (char **envp)
           strncatz (scratchFileName, ".cdb", sizeof(scratchFileName));
           *q = 0;
           strncatz(buffer, ".cdb", sizeof(buffer));
-          unlink (buffer);
+          if (strcmp (scratchFileName, buffer))
+            unlink (buffer);
           rename (scratchFileName, buffer);
           /* and the OMF file without extension: */
           *p = 0;
           *q = 0;
-          unlink (buffer);
+          if (strcmp (scratchFileName, buffer))
+            unlink (buffer);
           rename (scratchFileName, buffer);
         }
     }
@@ -1702,7 +1707,8 @@ assemble (char **envp)
         strncatz (scratchFileName, 
                  port->linker.rel_ext,
                  sizeof(scratchFileName));
-        unlink (fullDstFileName);
+        if (strcmp (scratchFileName, fullDstFileName))
+          unlink (fullDstFileName);
         rename (scratchFileName, fullDstFileName);
     }
 }