forked from qt-creator/qt-creator
C++: Fix nullptr references in preprocessor
Fixes: QTCREATORBUG-21981 Change-Id: Iaded998eb793fb4284a9f8b22b2fa7a7443a1585 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -764,7 +764,7 @@ QByteArray Preprocessor::run(const QString &fileName,
|
|||||||
preprocessed.reserve(source.size() * 2); // multiply by 2 because we insert #gen lines.
|
preprocessed.reserve(source.size() * 2); // multiply by 2 because we insert #gen lines.
|
||||||
preprocess(fileName, source, &preprocessed, &includeGuardMacroName, noLines,
|
preprocess(fileName, source, &preprocessed, &includeGuardMacroName, noLines,
|
||||||
markGeneratedTokens, false);
|
markGeneratedTokens, false);
|
||||||
if (!includeGuardMacroName.isEmpty())
|
if (m_client && !includeGuardMacroName.isEmpty())
|
||||||
m_client->markAsIncludeGuard(includeGuardMacroName);
|
m_client->markAsIncludeGuard(includeGuardMacroName);
|
||||||
return preprocessed;
|
return preprocessed;
|
||||||
}
|
}
|
||||||
@@ -986,10 +986,12 @@ bool Preprocessor::handleIdentifier(PPToken *tk)
|
|||||||
if (!expandFunctionlikeMacros()
|
if (!expandFunctionlikeMacros()
|
||||||
// Still expand if this originally started with an object-like macro.
|
// Still expand if this originally started with an object-like macro.
|
||||||
&& m_state.m_expansionStatus != Expanding) {
|
&& m_state.m_expansionStatus != Expanding) {
|
||||||
|
if (m_client) {
|
||||||
m_client->notifyMacroReference(m_state.m_bytesOffsetRef + idTk.byteOffset,
|
m_client->notifyMacroReference(m_state.m_bytesOffsetRef + idTk.byteOffset,
|
||||||
m_state.m_utf16charsOffsetRef + idTk.utf16charOffset,
|
m_state.m_utf16charsOffsetRef + idTk.utf16charOffset,
|
||||||
idTk.lineno,
|
idTk.lineno,
|
||||||
*macro);
|
*macro);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1793,7 +1795,7 @@ void Preprocessor::handleDefineDirective(PPToken *tk)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (macroReference) {
|
} else if (macroReference) {
|
||||||
if (tk->is(T_LPAREN)) {
|
if (m_client && tk->is(T_LPAREN)) {
|
||||||
m_client->notifyMacroReference(previousBytesOffset, previousUtf16charsOffset,
|
m_client->notifyMacroReference(previousBytesOffset, previousUtf16charsOffset,
|
||||||
previousLine, *macroReference);
|
previousLine, *macroReference);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user