summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/CppDocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/cplusplus/CppDocument.cpp')
-rw-r--r--src/libs/cplusplus/CppDocument.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp
index 786f07a79b..b181b01f74 100644
--- a/src/libs/cplusplus/CppDocument.cpp
+++ b/src/libs/cplusplus/CppDocument.cpp
@@ -55,7 +55,8 @@ class DocumentDiagnosticClient : public DiagnosticClient
public:
DocumentDiagnosticClient(Document *doc, QList<Document::DiagnosticMessage> *messages)
: doc(doc),
- messages(messages)
+ messages(messages),
+ errorCount(0)
{ }
virtual void report(int level,
@@ -63,8 +64,12 @@ public:
unsigned line, unsigned column,
const char *format, va_list ap)
{
- if (messages->count() == MAX_MESSAGE_COUNT)
- return;
+ if (level == Error) {
+ ++errorCount;
+
+ if (errorCount >= MAX_MESSAGE_COUNT)
+ return; // ignore the error
+ }
const QString fileName = QString::fromUtf8(fileId->chars(), fileId->size());
@@ -88,8 +93,10 @@ public:
}
}
+private:
Document *doc;
QList<Document::DiagnosticMessage> *messages;
+ int errorCount;
};
} // anonymous namespace