diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-07-16 11:48:08 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-07-16 14:02:59 +0000 |
commit | 2778a5adab13a16f4a6b3cda0980fa3b4f2b3a5e (patch) | |
tree | dfb49c61e090c21d32808750cadaa945bbdb752c /src | |
parent | 56dc926b9d8d97439c96a7b5db581621431207b5 (diff) |
CppTools: Fix updating pending queue in CppLocatorData
Fix that the invocations
CppLocatorData::onDocumentUpdated(Document{"bla.cpp", revision=5}),
CppLocatorData::onDocumentUpdated(Document{"bla.cpp", revision=3}),
would add two entries in m_pendingDocuments. The document from the
latter invocation should be ignored due to its outdated revision.
Change-Id: I5e9eb4de77f59633d5525d808bd60ca1259f894d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/cpptools/cpplocatordata.cpp | 12 |
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); |