@@ -741,7 +741,7 @@ bool CheckClass::isBaseClassMutableMemberFunc(const Token *tok, const Scope *sco
741741 return false ;
742742}
743743
744- void CheckClass::initializeVarList (const Function &func, std::list<const Function *> &callstack, const Scope *scope, std::vector<Usage> &usage)
744+ void CheckClass::initializeVarList (const Function &func, std::list<const Function *> &callstack, const Scope *scope, std::vector<Usage> &usage) const
745745{
746746 if (!func.functionScope )
747747 return ;
@@ -2310,9 +2310,9 @@ bool CheckClass::checkConstFunc(const Scope *scope, const Function *func, bool&
23102310 return nullptr ;
23112311 };
23122312
2313- auto checkFuncCall = [this , &memberAccessed](const Token* funcTok, const Scope* scope) {
2313+ auto checkFuncCall = [this , &memberAccessed](const Token* funcTok, const Scope* scope, const Function* func ) {
23142314 if (isMemberFunc (scope, funcTok) && (funcTok->strAt (-1 ) != " ." || Token::simpleMatch (funcTok->tokAt (-2 ), " this ." ))) {
2315- if (!isConstMemberFunc (scope, funcTok))
2315+ if (!isConstMemberFunc (scope, funcTok) && func != funcTok-> function () )
23162316 return false ;
23172317 memberAccessed = true ;
23182318 }
@@ -2490,7 +2490,7 @@ bool CheckClass::checkConstFunc(const Scope *scope, const Function *func, bool&
24902490 return false ;
24912491
24922492 tok1 = jumpBackToken?jumpBackToken:end; // Jump back to first [ to check inside, or jump to end of expression
2493- if (tok1 == end && Token::Match (end->previous (), " . %name% ( !!)" ) && !checkFuncCall (tok1, scope)) // function call on member
2493+ if (tok1 == end && Token::Match (end->previous (), " . %name% ( !!)" ) && !checkFuncCall (tok1, scope, func )) // function call on member
24942494 return false ;
24952495 }
24962496
@@ -2509,7 +2509,7 @@ bool CheckClass::checkConstFunc(const Scope *scope, const Function *func, bool&
25092509
25102510 // function/constructor call, return init list
25112511 else if (const Token* funcTok = getFuncTok (tok1)) {
2512- if (!checkFuncCall (funcTok, scope))
2512+ if (!checkFuncCall (funcTok, scope, func ))
25132513 return false ;
25142514 } else if (Token::simpleMatch (tok1, " > (" ) && (!tok1->link () || !Token::Match (tok1->link ()->previous (), " static_cast|const_cast|dynamic_cast|reinterpret_cast" ))) {
25152515 return false ;
0 commit comments