Skip to content

Commit 4de9249

Browse files
committed
fix FP in selfcheck
1 parent 5b5aa1f commit 4de9249

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

lib/checkclass.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -473,15 +473,15 @@ void CheckClassImpl::copyconstructors()
473473
if (Token::Match(tok, "%var% ( new") ||
474474
(Token::Match(tok, "%var% ( %name% (") && mSettings.library.getAllocFuncInfo(tok->tokAt(2)))) {
475475
const Variable* var = tok->variable();
476-
if (var && var->scope() == scope)
476+
if (var && var->scope() == scope && var->valueType() && var->valueType()->type != ValueType::SMART_POINTER)
477477
allocatedVars[tok->varId()] = tok;
478478
}
479479
}
480480
for (const Token* const end = func.functionScope->bodyEnd; tok != end; tok = tok->next()) {
481481
if (Token::Match(tok, "%var% = new") ||
482482
(Token::Match(tok, "%var% = %name% (") && mSettings.library.getAllocFuncInfo(tok->tokAt(2)))) {
483483
const Variable* var = tok->variable();
484-
if (var && var->scope() == scope && !var->isStatic())
484+
if (var && var->scope() == scope && !var->isStatic() && var->valueType() && var->valueType()->type != ValueType::SMART_POINTER)
485485
allocatedVars[tok->varId()] = tok;
486486
}
487487
}
@@ -493,7 +493,10 @@ void CheckClassImpl::copyconstructors()
493493
(Token::Match(tok, "%name% ( %var%") && mSettings.library.getDeallocFuncInfo(tok))) {
494494
const Token *vartok = tok->str() == "delete" ? tok->next() : tok->tokAt(2);
495495
const Variable* var = vartok->variable();
496-
if (var && var->scope() == scope && !var->isStatic())
496+
if (var && var->scope() == scope && !var->isStatic() &&
497+
var->valueType() && ((var->valueType()->type != ValueType::CONTAINER &&
498+
var->valueType()->type != ValueType::RECORD &&
499+
var->valueType()->type != ValueType::UNKNOWN_TYPE) || var->valueType()->pointer))
497500
deallocatedVars[vartok->varId()] = vartok;
498501
}
499502
}

0 commit comments

Comments
 (0)