aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-07-16 11:48:08 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-07-16 14:02:59 +0000
commit2778a5adab13a16f4a6b3cda0980fa3b4f2b3a5e (patch)
treedfb49c61e090c21d32808750cadaa945bbdb752c /src
parent56dc926b9d8d97439c96a7b5db581621431207b5 (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.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);