diff --git a/lib/platform.h b/lib/platform.h index 5c00a9edc..31e07271c 100644 --- a/lib/platform.h +++ b/lib/platform.h @@ -111,16 +111,20 @@ namespace cppcheck { const char *platformString() const { switch (platformType) { - case Unix32: - return "unix32"; - case Unix64: - return "unix64"; + case Unspecified: + return "Unspecified"; + case Native: + return "Native"; case Win32A: return "win32A"; case Win32W: return "win32W"; case Win64: return "win64"; + case Unix32: + return "unix32"; + case Unix64: + return "unix64"; case AVR8: return "avr8"; default: diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 78a563744..39325de73 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -8130,6 +8130,18 @@ void Tokenizer::validate() const cppcheckError(lastTok); } +static const std::set controlFlowKeywords = make_container< std::set > () << + "goto" << + "do" << + "if" << + "else" << + "for" << + "while" << + "switch" << + "case" << + "break" << + "continue" << + "return"; const Token * Tokenizer::findGarbageCode() const { @@ -8178,23 +8190,14 @@ const Token * Tokenizer::findGarbageCode() const return list.back(); if (list.back()->str() == ")" && !Token::Match(list.back()->link()->previous(), "%name% (")) return list.back(); - if (Token::Match(list.back(), "void|char|short|int|long|float|double|const|volatile|static|inline|struct|class|enum|union|template|sizeof|break|continue|typedef")) + if (Token::Match(list.back(), "void|char|short|int|long|float|double|const|volatile|static|inline|struct|class|enum|union|template|sizeof|case|break|continue|typedef")) return list.back(); + if ((list.back()->str()==")"||list.back()->str()=="}") && list.back()->previous() && controlFlowKeywords.find(list.back()->previous()->str()) != controlFlowKeywords.end()) + return list.back()->previous(); return nullptr; } -static const std::set controlFlowKeywords = make_container< std::set > () << - "goto" << - "do" << - "if" << - "else" << - "for" << - "while" << - "switch" << - "break" << - "continue" << - "return"; bool Tokenizer::isGarbageExpr(const Token *start, const Token *end) {