diff options
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index cc1979d6b7..d9f53f2f5d 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -714,9 +714,28 @@ void CppModelManager::GC() if (!m_enableGC) return; - const Snapshot currentSnapshot = snapshot(); + // Collect files of CppEditorSupport and AbstractEditorSupport. + QStringList filesInEditorSupports; + QList<CppEditorSupport *> cppEditorSupports; + { + QMutexLocker locker(&m_cppEditorSupportsMutex); + cppEditorSupports = m_cppEditorSupports.values(); + } + foreach (const CppEditorSupport *cppEditorSupport, cppEditorSupports) + filesInEditorSupports << cppEditorSupport->fileName(); + + QSetIterator<AbstractEditorSupport *> jt(m_extraEditorSupports); + while (jt.hasNext()) { + AbstractEditorSupport *abstractEditorSupport = jt.next(); + filesInEditorSupports << abstractEditorSupport->fileName(); + } + + Snapshot currentSnapshot = snapshot(); QSet<QString> reachableFiles; - QStringList todo = projectFiles(); + // The configuration file is part of the project files, which is just fine. + // If single files are open, without any project, then there is no need to + // keep the configuration file around. + QStringList todo = filesInEditorSupports + projectFiles(); // Collect all files that are reachable from the project files while (!todo.isEmpty()) { |