Skip to content

Commit 21dd3bd

Browse files
authored
changed some parameters from pointers to references (#7408)
1 parent 2684ba9 commit 21dd3bd

File tree

6 files changed

+20
-20
lines changed

6 files changed

+20
-20
lines changed

lib/astutils.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,7 +2171,7 @@ static bool isEscapedOrJump(const Token* tok, bool functionsScope, const Library
21712171
return Token::Match(tok, "return|goto|throw|continue|break");
21722172
}
21732173

2174-
bool isEscapeFunction(const Token* ftok, const Library* library)
2174+
bool isEscapeFunction(const Token* ftok, const Library& library)
21752175
{
21762176
if (!Token::Match(ftok, "%name% ("))
21772177
return false;
@@ -2181,8 +2181,8 @@ bool isEscapeFunction(const Token* ftok, const Library* library)
21812181
return true;
21822182
if (function->isAttributeNoreturn())
21832183
return true;
2184-
} else if (library) {
2185-
if (library->isnoreturn(ftok))
2184+
} else {
2185+
if (library.isnoreturn(ftok))
21862186
return true;
21872187
}
21882188
return false;
@@ -2840,7 +2840,7 @@ const Token* findExpression(const Token* start, const nonneg int exprid)
28402840
return nullptr;
28412841
}
28422842

2843-
const Token* findEscapeStatement(const Scope* scope, const Library* library)
2843+
const Token* findEscapeStatement(const Scope* scope, const Library& library)
28442844
{
28452845
if (!scope)
28462846
return nullptr;

lib/astutils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ const Token* findExpression(nonneg int exprid,
123123
const Token* findExpression(const Token* start, nonneg int exprid);
124124

125125
/** Does code execution escape from the given scope? */
126-
const Token* findEscapeStatement(const Scope* scope, const Library* library);
126+
const Token* findEscapeStatement(const Scope* scope, const Library& library);
127127

128128
std::vector<const Token*> astFlatten(const Token* tok, const char* op);
129129
std::vector<Token*> astFlatten(Token* tok, const char* op);
@@ -298,7 +298,7 @@ bool isWithoutSideEffects(const Token* tok, bool checkArrayAccess = false, bool
298298

299299
bool isUniqueExpression(const Token* tok);
300300

301-
bool isEscapeFunction(const Token* ftok, const Library* library);
301+
bool isEscapeFunction(const Token* ftok, const Library& library);
302302

303303
/** Is scope a return scope (scope will unconditionally return) */
304304
CPPCHECKLIB bool isReturnScope(const Token* endToken,

lib/checkautovariables.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -463,9 +463,9 @@ static int getPointerDepth(const Token *tok)
463463
return n;
464464
}
465465

466-
static bool isDeadTemporary(const Token* tok, const Token* expr, const Library* library)
466+
static bool isDeadTemporary(const Token* tok, const Token* expr, const Library& library)
467467
{
468-
if (!isTemporary(tok, library))
468+
if (!isTemporary(tok, &library))
469469
return false;
470470
if (expr) {
471471
if (!precedes(nextAfterAstRightmostLeaf(tok->astTop()), nextAfterAstRightmostLeaf(expr->astTop())))
@@ -562,7 +562,7 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
562562
errorReturnReference(tok, lt.errorPath, lt.inconclusive);
563563
break;
564564
}
565-
if (isDeadTemporary(lt.token, nullptr, &mSettings->library)) {
565+
if (isDeadTemporary(lt.token, nullptr, mSettings->library)) {
566566
errorReturnTempReference(tok, lt.errorPath, lt.inconclusive);
567567
break;
568568
}
@@ -584,7 +584,7 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
584584
if (!printInconclusive && lt.inconclusive)
585585
continue;
586586
const Token * tokvalue = lt.token;
587-
if (isDeadTemporary(tokvalue, tok, &mSettings->library)) {
587+
if (isDeadTemporary(tokvalue, tok, mSettings->library)) {
588588
errorDanglingTempReference(tok, lt.errorPath, lt.inconclusive);
589589
break;
590590
}
@@ -614,15 +614,15 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
614614
continue;
615615
if ((tokvalue->variable() && !isEscapedReference(tokvalue->variable()) &&
616616
isInScope(tokvalue->variable()->nameToken(), scope)) ||
617-
isDeadTemporary(tokvalue, nullptr, &mSettings->library)) {
617+
isDeadTemporary(tokvalue, nullptr, mSettings->library)) {
618618
errorReturnDanglingLifetime(tok, &val);
619619
break;
620620
}
621621
} else if (tokvalue->variable() && isDeadScope(tokvalue->variable()->nameToken(), tok->scope())) {
622622
errorInvalidLifetime(tok, &val);
623623
break;
624624
} else if (!tokvalue->variable() &&
625-
isDeadTemporary(tokvalue, tok, &mSettings->library)) {
625+
isDeadTemporary(tokvalue, tok, mSettings->library)) {
626626
if (!diag(tokvalue))
627627
errorDanglingTemporaryLifetime(tok, &val, tokvalue);
628628
break;

lib/checkother.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,21 +1391,21 @@ void CheckOther::commaSeparatedReturnError(const Token *tok)
13911391
"macro is then used in a return statement, it is less likely such code is misunderstood.", CWE398, Certainty::normal);
13921392
}
13931393

1394-
static bool isLargeContainer(const Variable* var, const Settings* settings)
1394+
static bool isLargeContainer(const Variable* var, const Settings& settings)
13951395
{
13961396
const ValueType* vt = var->valueType();
13971397
if (vt->container->size_templateArgNo < 0)
13981398
return true;
1399-
const std::size_t maxByValueSize = 2 * settings->platform.sizeof_pointer;
1399+
const std::size_t maxByValueSize = 2 * settings.platform.sizeof_pointer;
14001400
if (var->dimensions().empty()) {
14011401
if (vt->container->startPattern == "std :: bitset <") {
14021402
if (const ValueFlow::Value* v = vt->containerTypeToken->getKnownValue(ValueFlow::Value::ValueType::INT))
14031403
return v->intvalue / 8 > maxByValueSize;
14041404
}
14051405
return false;
14061406
}
1407-
const ValueType vtElem = ValueType::parseDecl(vt->containerTypeToken, *settings);
1408-
const auto elemSize = std::max<std::size_t>(ValueFlow::getSizeOf(vtElem, *settings), 1);
1407+
const ValueType vtElem = ValueType::parseDecl(vt->containerTypeToken, settings);
1408+
const auto elemSize = std::max<std::size_t>(ValueFlow::getSizeOf(vtElem, settings), 1);
14091409
const auto arraySize = var->dimension(0) * elemSize;
14101410
return arraySize > maxByValueSize;
14111411
}
@@ -1438,7 +1438,7 @@ void CheckOther::checkPassByReference()
14381438
bool inconclusive = false;
14391439

14401440
const bool isContainer = var->valueType() && var->valueType()->type == ValueType::Type::CONTAINER && var->valueType()->container && !var->valueType()->container->view;
1441-
if (isContainer && !isLargeContainer(var, mSettings))
1441+
if (isContainer && !isLargeContainer(var, *mSettings))
14421442
continue;
14431443
if (!isContainer) {
14441444
if (var->type() && !var->type()->isEnumType()) { // Check if type is a struct or class.

lib/forwardanalyzer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ namespace {
143143
traverseRecursive(tok->astOperand2(), f, traverseUnknown);
144144
traverseRecursive(tok->astOperand1(), f, traverseUnknown);
145145
return Break(Analyzer::Terminate::Escape);
146-
} else if (Token::Match(tok, "%name% (") && isEscapeFunction(tok, &settings.library)) {
146+
} else if (Token::Match(tok, "%name% (") && isEscapeFunction(tok, settings.library)) {
147147
// Traverse the parameters of the function before escaping
148148
traverseRecursive(tok->next()->astOperand2(), f, traverseUnknown);
149149
return Break(Analyzer::Terminate::Escape);

lib/valueflow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4645,7 +4645,7 @@ struct ConditionHandler {
46454645
if (!Token::Match(tok, "%assign%|++|--") &&
46464646
findExpression(cond.vartok->exprId(), start, end, [&](const Token* tok2) {
46474647
return Token::Match(tok2->astParent(), "%assign%") && astIsLHS(tok2);
4648-
}) && !findEscapeStatement(block->scope(), &settings.library)) {
4648+
}) && !findEscapeStatement(block->scope(), settings.library)) {
46494649
// Start at the end of the loop body
46504650
Token* bodyTok = top->link()->next();
46514651
reverse(bodyTok->link(), bodyTok, cond.vartok, values, tokenlist, errorLogger, settings);
@@ -5320,7 +5320,7 @@ static void valueFlowForLoopSimplify(Token* const bodyStart,
53205320
if (isVariableChanged(bodyStart, bodyEnd, expr->varId(), globalvar, settings))
53215321
return;
53225322

5323-
if (const Token* escape = findEscapeStatement(bodyStart->scope(), &settings.library)) {
5323+
if (const Token* escape = findEscapeStatement(bodyStart->scope(), settings.library)) {
53245324
if (settings.debugwarnings)
53255325
bailout(tokenlist, errorLogger, escape, "For loop variable bailout on escape statement");
53265326
return;

0 commit comments

Comments
 (0)