]> git.gag.com Git - fw/sdcc/blobdiff - src/SDCCasm.c
Implemented RFE #1899189
[fw/sdcc] / src / SDCCasm.c
index b8ce3b39ff714a92c7b9627bf6998356efc95e6a..383c40a43720ccce6623e080f5b09b6e085ddeb2 100644 (file)
@@ -212,6 +212,7 @@ tfprintf (FILE *fp, const char *szFormat, ...)
   va_list ap;
   struct dbuf_s dbuf;
   size_t len;
+  size_t res;
 
   dbuf_init (&dbuf, INITIAL_INLINEASM);
 
@@ -220,7 +221,8 @@ tfprintf (FILE *fp, const char *szFormat, ...)
   va_end (ap);
 
   len = dbuf_get_length (&dbuf);
-  fwrite(dbuf_get_buf (&dbuf), 1, len, fp);
+  res = fwrite(dbuf_get_buf (&dbuf), 1, len, fp);
+  assert(res == len);
   dbuf_destroy (&dbuf);
 }
 
@@ -247,6 +249,7 @@ printILine (iCode *ic)
 {
   char *verbalICode;
   struct dbuf_s tmpBuf;
+  size_t len;
   iCodeTable *icTab = getTableEntry (ic->op);
 
   dbuf_init (&tmpBuf, 1024);
@@ -259,13 +262,15 @@ printILine (iCode *ic)
       icTab->iCodePrint (&tmpBuf, ic, icTab->printName);
     }
 
+  len = dbuf_get_length (&tmpBuf);
+
   /* null terminate the buffer */
   dbuf_c_str (&tmpBuf);
   verbalICode = dbuf_detach (&tmpBuf);
 
   /* kill the trailing NL */
-  if ('\n' == verbalICode[strlen(verbalICode) - 1])
-    verbalICode[strlen(verbalICode) - 1] = '\0';
+  if (len > 0 && '\n' == verbalICode[len - 1])
+    verbalICode[--len] = '\0';
 
   /* and throw it up */
   return verbalICode;
@@ -295,7 +300,7 @@ skipLine (FILE *infp)
           /* EOF in the middle of the line */
           is_eof = 1;
           return 1;
-        }  
+        }
       else
         return 0;
     }
@@ -315,6 +320,7 @@ printCLine (const char *srcFile, int lineno)
   static struct dbuf_s lastSrcFile;
   static char dbufInitialized = 0;
   static int inLineNo = 0;
+  size_t len;
 
   if (!dbufInitialized)
     {
@@ -374,17 +380,16 @@ printCLine (const char *srcFile, int lineno)
     }
 
    /* get the line */
-  if (dbuf_getline (&line, inFile))
+  if (0 != (len = dbuf_getline (&line, inFile)))
     {
       const char *inLineString = dbuf_c_str (&line);
-      size_t len = strlen (inLineString);
 
       ++inLineNo;
 
       /* remove the trailing NL */
-      if ('\n' == inLineString[len - 1])
+      if (len > 0 &&'\n' == inLineString[len - 1])
         {
-          dbuf_set_length (&line, len - 1);
+          dbuf_set_length (&line, --len);
           inLineString = dbuf_c_str (&line);
         }