@@ -499,7 +499,8 @@ void CheckClass::copyconstructors()
499499 }
500500 }
501501 for (tok = func.functionScope ->bodyStart ; tok != func.functionScope ->bodyEnd ; tok = tok->next ()) {
502- if (Token::Match (tok, " %var% = new|malloc|g_malloc|g_try_malloc|realloc|g_realloc|g_try_realloc" )) {
502+ if ((mTokenizer ->isCPP () && Token::Match (tok, " %var% = new" )) ||
503+ (Token::Match (tok, " %var% = %name% (" ) && (mSettings ->library .getAllocFuncInfo (tok->tokAt (2 )) || mSettings ->library .getReallocFuncInfo (tok->tokAt (2 ))))) {
503504 allocatedVars.erase (tok->varId ());
504505 } else if (Token::Match (tok, " %var% = %name% . %name% ;" ) && allocatedVars.find (tok->varId ()) != allocatedVars.end ()) {
505506 copiedVars.insert (tok);
@@ -1404,7 +1405,8 @@ void CheckClass::checkMemset()
14041405 const std::set<const Scope *> parsedTypes;
14051406 checkMemsetType (scope, tok, type, false , parsedTypes);
14061407 }
1407- } else if (tok->variable () && tok->variable ()->typeScope () && Token::Match (tok, " %var% = calloc|malloc|realloc|g_malloc|g_try_malloc|g_realloc|g_try_realloc (" )) {
1408+ } else if (tok->variable () && tok->variable ()->typeScope () && Token::Match (tok, " %var% = %name% (" ) &&
1409+ (mSettings ->library .getAllocFuncInfo (tok->tokAt (2 )) || mSettings ->library .getReallocFuncInfo (tok->tokAt (2 )))) {
14081410 const std::set<const Scope *> parsedTypes;
14091411 checkMemsetType (scope, tok->tokAt (2 ), tok->variable ()->typeScope (), true , parsedTypes);
14101412
@@ -1737,16 +1739,18 @@ bool CheckClass::hasAllocation(const Function *func, const Scope* scope, const T
17371739 if (!end)
17381740 end = func->functionScope ->bodyEnd ;
17391741 for (const Token *tok = start; tok && (tok != end); tok = tok->next ()) {
1740- if (Token::Match (tok, " %var% = malloc|realloc|calloc|new" ) && isMemberVar (scope, tok))
1742+ if (((mTokenizer ->isCPP () && Token::Match (tok, " %var% = new" )) ||
1743+ (Token::Match (tok, " %var% = %name% (" ) && mSettings ->library .getAllocFuncInfo (tok->tokAt (2 )))) &&
1744+ isMemberVar (scope, tok))
17411745 return true ;
17421746
17431747 // check for deallocating memory
17441748 const Token *var;
17451749 if (Token::Match (tok, " %name% ( %var%" ) && mSettings ->library .getDeallocFuncInfo (tok))
17461750 var = tok->tokAt (2 );
1747- else if (Token::Match (tok, " delete [ ] %var%" ))
1751+ else if (mTokenizer -> isCPP () && Token::Match (tok, " delete [ ] %var%" ))
17481752 var = tok->tokAt (3 );
1749- else if (Token::Match (tok, " delete %var%" ))
1753+ else if (mTokenizer -> isCPP () && Token::Match (tok, " delete %var%" ))
17501754 var = tok->next ();
17511755 else
17521756 continue ;
0 commit comments