summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-02-14 09:27:29 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-02-14 10:00:23 +0000
commit25487daffd54bb73e59fc4aa1414beac5b7ed93b (patch)
tree8639ddbe28707ab4ce143902b301e98f980361da
parente8a511f313422602626edc86d7669603fc52ea51 (diff)
downloadqt-creator-25487daffd54bb73e59fc4aa1414beac5b7ed93b.tar.gz
C++: Fix nullptr references in preprocessor
Fixes: QTCREATORBUG-21981 Change-Id: Iaded998eb793fb4284a9f8b22b2fa7a7443a1585 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/libs/cplusplus/pp-engine.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 0050a2fd84..50dbb7c140 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -764,7 +764,7 @@ QByteArray Preprocessor::run(const QString &fileName,
preprocessed.reserve(source.size() * 2); // multiply by 2 because we insert #gen lines.
preprocess(fileName, source, &preprocessed, &includeGuardMacroName, noLines,
markGeneratedTokens, false);
- if (!includeGuardMacroName.isEmpty())
+ if (m_client && !includeGuardMacroName.isEmpty())
m_client->markAsIncludeGuard(includeGuardMacroName);
return preprocessed;
}
@@ -986,10 +986,12 @@ bool Preprocessor::handleIdentifier(PPToken *tk)
if (!expandFunctionlikeMacros()
// Still expand if this originally started with an object-like macro.
&& m_state.m_expansionStatus != Expanding) {
- m_client->notifyMacroReference(m_state.m_bytesOffsetRef + idTk.byteOffset,
- m_state.m_utf16charsOffsetRef + idTk.utf16charOffset,
- idTk.lineno,
- *macro);
+ if (m_client) {
+ m_client->notifyMacroReference(m_state.m_bytesOffsetRef + idTk.byteOffset,
+ m_state.m_utf16charsOffsetRef + idTk.utf16charOffset,
+ idTk.lineno,
+ *macro);
+ }
return false;
}
@@ -1793,7 +1795,7 @@ void Preprocessor::handleDefineDirective(PPToken *tk)
}
}
} else if (macroReference) {
- if (tk->is(T_LPAREN)) {
+ if (m_client && tk->is(T_LPAREN)) {
m_client->notifyMacroReference(previousBytesOffset, previousUtf16charsOffset,
previousLine, *macroReference);
}