From 493cde8335849bd90381d99967edcead3cfd2541 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 19 Apr 2012 17:30:03 +0200 Subject: [PATCH] preprocessor: do not expand macros when checking defined(...) Change-Id: I39cfbd7f7adf13ec52527c79c9481d56283087df Reviewed-by: hjk --- src/libs/cplusplus/pp-engine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 7dca9a3497a..9661852b2a8 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -636,6 +636,7 @@ void Preprocessor::genLine(unsigned lineno, const QByteArray &fileName) const void Preprocessor::handleDefined(PPToken *tk) { + ScopedBoolSwap s(m_state.m_inPreprocessorDirective, true); unsigned lineno = tk->lineno; lex(tk); // consume "defined" token bool lparenSeen = tk->is(T_LPAREN); @@ -698,8 +699,7 @@ _Lclassify: } while (isValidToken(*tk)); goto _Lclassify; } else if (tk->is(T_IDENTIFIER) && !isQtReservedWord(tk->asByteArrayRef())) { - static const QByteArray ppDefined("defined"); - if (m_state.m_inCondition && tk->asByteArrayRef() == ppDefined) + if (m_state.m_inCondition && tk->asByteArrayRef() == "defined") handleDefined(tk); else if (handleIdentifier(tk)) goto _Lagain;