From a39eaec1cc2363b8672ebf1b8f37902b309cc1bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 16 Jan 2009 19:50:39 +0000 Subject: [PATCH] preprocessor: Fixed a null pointer dereference --- src/preprocessor.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/preprocessor.cpp b/src/preprocessor.cpp index cdcd3e7d1..ba4e5466f 100644 --- a/src/preprocessor.cpp +++ b/src/preprocessor.cpp @@ -576,23 +576,26 @@ std::string Preprocessor::expandMacros(std::string code) const Token *tok = tokenizer.tokens(); while (tok && tok->str() != ")") tok = tok->next(); - while ((tok = tok->next()) != NULL) + if (tok) { - std::string str = tok->str(); - if (tok->isName()) + while ((tok = tok->next()) != NULL) { - for (unsigned int i = 0; i < macroparams.size(); ++i) + std::string str = tok->str(); + if (tok->isName()) { - if (str == macroparams[i]) + for (unsigned int i = 0; i < macroparams.size(); ++i) { - str = params[i]; - break; + if (str == macroparams[i]) + { + str = params[i]; + break; + } } } + macrocode += str; + if (Token::Match(tok, "%type% %var%")) + macrocode += " "; } - macrocode += str; - if (Token::Match(tok, "%type% %var%")) - macrocode += " "; } }