* as/mcs51/lkmem.c: rflag is for DS390
[fw/sdcc] / src / asm.c
index 8b9f7798075154c11763ce867c7c3986efee523a..9722ced0cb076d67565ad2c5fb1c8522718a75c9 100644 (file)
--- a/src/asm.c
+++ b/src/asm.c
@@ -209,16 +209,25 @@ asm_addTree (const ASM_MAPPINGS * pMappings)
 static FILE *inFile=NULL;
 static char inLineString[1024];
 static int inLineNo=0;
+static char lastSrcFile[PATH_MAX];
 int rewinds=0;
 
 char *printCLine (char *srcFile, int lineno) {
   char *ilsP=inLineString;
+
+  if (inFile) {
+    if (strcmp (lastSrcFile, srcFile) != 0) {
+      fclose (inFile);
+      inFile = NULL;
+    }
+  }
   if (!inFile) {
     inFile=fopen(srcFile, "r");
     if (!inFile) {
       perror ("printCLine");
       exit (1);
     }
+    strcpy (lastSrcFile, srcFile);
   }
   if (lineno<inLineNo) {
     fseek (inFile, 0, SEEK_SET);