]> git.sur5r.net Git - cc65/commitdiff
Limit the number of additional line infos printed in case of an error or
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 7 Jun 2011 21:15:16 +0000 (21:15 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 7 Jun 2011 21:15:16 +0000 (21:15 +0000)
warning.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5037 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/error.c

index f647fee43ed711e99a18d43ff8d9274c71f61921..3de780d86bf643caed9951dfcd3f7af6f7a8148c 100644 (file)
@@ -120,13 +120,20 @@ static void PrintMsg (const FilePos* Pos, const char* Desc,
 static void AddNotifications (const Collection* LineInfos)
 /* Output additional notifications for an error or warning */
 {
+    unsigned I;
+    unsigned Skipped;
+
     /* The basic line info is always in slot zero. It has been used to
      * output the actual error or warning. The following slots may contain
-     * more information. Check them and additional notifications if they're
-     * present.
+     * more information. Check them and print additional notifications if
+     * they're present, but limit the number to a reasonable value.
      */
-    unsigned I;
-    for (I = 1; I < CollCount (LineInfos); ++I) {
+    unsigned MaxCount = CollCount (LineInfos);
+    if (MaxCount > 6) {
+        MaxCount = 6;
+    }               
+    Skipped = CollCount (LineInfos) - MaxCount;
+    for (I = 1; I < MaxCount; ++I) {
         /* Get next line info */
         const LineInfo* LI = CollConstAt (LineInfos, I);
         /* Check the type and output an appropriate note */
@@ -139,6 +146,12 @@ static void AddNotifications (const Collection* LineInfos)
                       "Macro was defined here");
         }
     }
+
+    /* Add a note if we have more stuff that we won't output */
+    if (Skipped > 0) {
+        PrintMsg (GetSourcePos (CollConstAt (LineInfos, 0)), "Note",
+                  "Dropping %u additional line infos", Skipped);
+    }
 }