From a3e231eaf254fc8d90676b3965939e3ac4988080 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 16 Mar 2025 22:03:20 +0100 Subject: [PATCH] refs #13698 - Library: generate proper types for lookup in `detectSmartPointer()` Co-authored-by: --- lib/library.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/library.cpp b/lib/library.cpp index d926eaddfc2..80f70e3f141 100644 --- a/lib/library.cpp +++ b/lib/library.cpp @@ -1890,9 +1890,15 @@ bool Library::isSmartPointer(const Token* tok) const const Library::SmartPointer* Library::detectSmartPointer(const Token* tok, bool withoutStd) const { std::string typestr = withoutStd ? "std::" : ""; - while (Token::Match(tok, "%name%|::")) { - typestr += tok->str(); + if (tok->str() == "::") tok = tok->next(); + while (Token::Match(tok, "%name% ::")) { + typestr += tok->str(); + typestr += "::"; + tok = tok->tokAt(2); + } + if (tok && tok->isName()) { + typestr += tok->str(); } auto it = mData->mSmartPointers.find(typestr); if (it == mData->mSmartPointers.end())