aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/cpptools/cpplocatordata.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/plugins/cpptools/cpplocatordata.cpp b/src/plugins/cpptools/cpplocatordata.cpp
index d736736191..f650859711 100644
--- a/src/plugins/cpptools/cpplocatordata.cpp
+++ b/src/plugins/cpptools/cpplocatordata.cpp
@@ -44,16 +44,18 @@ void CppLocatorData::onDocumentUpdated(const CPlusPlus::Document::Ptr &document)
{
QMutexLocker locker(&m_pendingDocumentsMutex);
- int i = 0, ei = m_pendingDocuments.size();
- for (; i < ei; ++i) {
+ bool isPending = false;
+ for (int i = 0, ei = m_pendingDocuments.size(); i < ei; ++i) {
const CPlusPlus::Document::Ptr &doc = m_pendingDocuments.at(i);
- if (doc->fileName() == document->fileName() && doc->revision() <= document->revision()) {
- m_pendingDocuments[i] = document;
+ if (doc->fileName() == document->fileName()) {
+ isPending = true;
+ if (document->revision() >= doc->revision())
+ m_pendingDocuments[i] = document;
break;
}
}
- if (i == ei && QFileInfo(document->fileName()).suffix() != "moc")
+ if (!isPending && QFileInfo(document->fileName()).suffix() != "moc")
m_pendingDocuments.append(document);
flushPendingDocument(false);