diff --git a/lib/token.cpp b/lib/token.cpp index 50fd91473..f3a60e2fa 100644 --- a/lib/token.cpp +++ b/lib/token.cpp @@ -1059,6 +1059,7 @@ void Token::insertToken(const std::string &tokenStr, const std::string &original if (!newScopeInfo->name.empty() && !nextScopeNameAddition.empty()) newScopeInfo->name.append(" :: "); newScopeInfo->name.append(nextScopeNameAddition); + nextScopeNameAddition = ""; newToken->scopeInfo(newScopeInfo); } else if (tokenStr == "}") { diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index ef3f542c3..9667bb7fe 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -2873,7 +2873,11 @@ void Tokenizer::calculateScopes() if (usingNamespaceName.length() > 0) usingNamespaceName = usingNamespaceName.substr(0, usingNamespaceName.length() - 1); tok->scopeInfo()->usingNamespaces.insert(usingNamespaceName); } else if (Token::Match(tok, "namespace|class|struct|union %name% {|::|:|<")) { - for (Token* nameTok = tok->next(); nameTok && !Token::Match(nameTok, "{|:|<"); nameTok = nameTok->next()) { + for (Token* nameTok = tok->next(); nameTok && !Token::Match(nameTok, "{|:"); nameTok = nameTok->next()) { + if (Token::Match(nameTok, ";|<")) { + nextScopeNameAddition = ""; + break; + } nextScopeNameAddition.append(nameTok->str()); nextScopeNameAddition.append(" "); }