diff --git a/lib/astutils.cpp b/lib/astutils.cpp index d1e92ed93c1..54c724d34a8 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -1506,8 +1506,12 @@ bool isSameExpression(bool cpp, bool macro, const Token *tok1, const Token *tok2 if (cpp) { if (tok1->str() == "." && tok1->astOperand1() && tok1->astOperand1()->str() == "this") tok1 = tok1->astOperand2(); + while (Token::simpleMatch(tok1, "::") && tok1->astOperand2()) + tok1 = tok1->astOperand2(); if (tok2->str() == "." && tok2->astOperand1() && tok2->astOperand1()->str() == "this") tok2 = tok2->astOperand2(); + while (Token::simpleMatch(tok2, "::") && tok2->astOperand2()) + tok2 = tok2->astOperand2(); } // Skip double not if (Token::simpleMatch(tok1, "!") && Token::simpleMatch(tok1->astOperand1(), "!") && !Token::simpleMatch(tok1->astParent(), "=") && astIsBoolLike(tok2)) {