summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpppreprocessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cpppreprocessor.cpp')
-rw-r--r--src/plugins/cpptools/cpppreprocessor.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/cpptools/cpppreprocessor.cpp b/src/plugins/cpptools/cpppreprocessor.cpp
index b276885001..7bc50c5f9e 100644
--- a/src/plugins/cpptools/cpppreprocessor.cpp
+++ b/src/plugins/cpptools/cpppreprocessor.cpp
@@ -410,6 +410,14 @@ void CppPreprocessor::sourceNeeded(unsigned line, const QString &fileName, Inclu
if (absoluteFileName != modelManager()->configurationFileName())
m_included.insert(absoluteFileName);
+ // Already in snapshot? Use it!
+ Document::Ptr doc = m_snapshot.document(absoluteFileName);
+ if (doc) {
+ mergeEnvironment(doc);
+ return;
+ }
+
+ // Otherwise get file contents
unsigned editorRevision = 0;
QByteArray contents;
const bool gotFileContents = getFileContents(absoluteFileName, &contents, &editorRevision);
@@ -427,12 +435,6 @@ void CppPreprocessor::sourceNeeded(unsigned line, const QString &fileName, Inclu
<< "contents:" << contents.size() << "bytes";
}
- Document::Ptr doc = m_snapshot.document(absoluteFileName);
- if (doc) {
- mergeEnvironment(doc);
- return;
- }
-
doc = Document::create(absoluteFileName);
doc->setRevision(m_revision);
doc->setEditorRevision(editorRevision);