@@ -2000,7 +2000,7 @@ static Analyzer::Result valueFlowForward(Token* startToken,
20002000 return valueFlowGenericForward (startToken,
20012001 endToken,
20022002 makeAnalyzer (exprTok, std::move (value), tokenlist, settings),
2003- settings);
2003+ * settings);
20042004}
20052005
20062006static Analyzer::Result valueFlowForward (Token* startToken,
@@ -2045,7 +2045,7 @@ static Analyzer::Result valueFlowForwardRecursive(Token* top,
20452045 if (settings->debugnormal )
20462046 setSourceLocation (v, loc, top);
20472047 result.update (
2048- valueFlowGenericForward (top, makeAnalyzer (exprTok, std::move (v), tokenlist, settings), settings));
2048+ valueFlowGenericForward (top, makeAnalyzer (exprTok, std::move (v), tokenlist, settings), * settings));
20492049 }
20502050 return result;
20512051}
@@ -2061,7 +2061,7 @@ static void valueFlowReverse(Token* tok,
20612061 for (ValueFlow::Value& v : values) {
20622062 if (settings->debugnormal )
20632063 setSourceLocation (v, loc, tok);
2064- valueFlowGenericReverse (tok, endToken, makeReverseAnalyzer (varToken, std::move (v), tokenlist, settings), settings);
2064+ valueFlowGenericReverse (tok, endToken, makeReverseAnalyzer (varToken, std::move (v), tokenlist, settings), * settings);
20652065 }
20662066}
20672067
@@ -5109,12 +5109,12 @@ static const Scope* getLoopScope(const Token* tok)
51095109}
51105110
51115111//
5112- static void valueFlowConditionExpressions (TokenList *tokenlist, SymbolDatabase* symboldatabase, ErrorLogger *errorLogger, const Settings * settings)
5112+ static void valueFlowConditionExpressions (TokenList *tokenlist, SymbolDatabase* symboldatabase, ErrorLogger *errorLogger, const Settings & settings)
51135113{
51145114 for (const Scope * scope : symboldatabase->functionScopes ) {
51155115 if (const Token* incompleteTok = findIncompleteVar (scope->bodyStart , scope->bodyEnd )) {
51165116 if (incompleteTok->isIncompleteVar ()) {
5117- if (settings-> debugwarnings )
5117+ if (settings. debugwarnings )
51185118 bailoutIncompleteVar (tokenlist, errorLogger, incompleteTok, " Skipping function due to incomplete variable " + incompleteTok->str ());
51195119 break ;
51205120 }
@@ -5132,7 +5132,7 @@ static void valueFlowConditionExpressions(TokenList *tokenlist, SymbolDatabase*
51325132 continue ;
51335133 if (condTok->hasKnownIntValue ())
51345134 continue ;
5135- if (!isConstExpression (condTok, settings-> library , tokenlist->isCPP ()))
5135+ if (!isConstExpression (condTok, settings. library , tokenlist->isCPP ()))
51365136 continue ;
51375137 const bool is1 = (condTok->isComparisonOp () || condTok->tokType () == Token::eLogicalOp || astIsBool (condTok));
51385138
@@ -5142,11 +5142,11 @@ static void valueFlowConditionExpressions(TokenList *tokenlist, SymbolDatabase*
51425142 for (const Token* condTok2 : getConditions (condTok, " &&" )) {
51435143 if (is1) {
51445144 const bool isBool = astIsBool (condTok2) || Token::Match (condTok2, " %comp%|%oror%|&&" );
5145- SameExpressionAnalyzer a1 (condTok2, makeConditionValue (1 , condTok2, /* assume*/ true , !isBool), tokenlist, settings); // don't set '1' for non-boolean expressions
5145+ SameExpressionAnalyzer a1 (condTok2, makeConditionValue (1 , condTok2, /* assume*/ true , !isBool), tokenlist, & settings); // don't set '1' for non-boolean expressions
51465146 valueFlowGenericForward (startTok, startTok->link (), a1, settings);
51475147 }
51485148
5149- OppositeExpressionAnalyzer a2 (true , condTok2, makeConditionValue (0 , condTok2, true ), tokenlist, settings);
5149+ OppositeExpressionAnalyzer a2 (true , condTok2, makeConditionValue (0 , condTok2, true ), tokenlist, & settings);
51505150 valueFlowGenericForward (startTok, startTok->link (), a2, settings);
51515151 }
51525152 }
@@ -5157,18 +5157,18 @@ static void valueFlowConditionExpressions(TokenList *tokenlist, SymbolDatabase*
51575157 if (Token::simpleMatch (startTok->link (), " } else {" )) {
51585158 startTok = startTok->link ()->tokAt (2 );
51595159 for (const Token* condTok2:conds) {
5160- SameExpressionAnalyzer a1 (condTok2, makeConditionValue (0 , condTok2, false ), tokenlist, settings);
5160+ SameExpressionAnalyzer a1 (condTok2, makeConditionValue (0 , condTok2, false ), tokenlist, & settings);
51615161 valueFlowGenericForward (startTok, startTok->link (), a1, settings);
51625162
51635163 if (is1) {
5164- OppositeExpressionAnalyzer a2 (true , condTok2, makeConditionValue (1 , condTok2, false ), tokenlist, settings);
5164+ OppositeExpressionAnalyzer a2 (true , condTok2, makeConditionValue (1 , condTok2, false ), tokenlist, & settings);
51655165 valueFlowGenericForward (startTok, startTok->link (), a2, settings);
51665166 }
51675167 }
51685168 }
51695169
51705170 // Check if the block terminates early
5171- if (isEscapeScope (blockTok, tokenlist, settings)) {
5171+ if (isEscapeScope (blockTok, tokenlist, & settings)) {
51725172 const Scope* scope2 = scope;
51735173 // If escaping a loop then only use the loop scope
51745174 if (isBreakOrContinueScope (blockTok->link ())) {
@@ -5177,11 +5177,11 @@ static void valueFlowConditionExpressions(TokenList *tokenlist, SymbolDatabase*
51775177 continue ;
51785178 }
51795179 for (const Token* condTok2:conds) {
5180- SameExpressionAnalyzer a1 (condTok2, makeConditionValue (0 , condTok2, false ), tokenlist, settings);
5180+ SameExpressionAnalyzer a1 (condTok2, makeConditionValue (0 , condTok2, false ), tokenlist, & settings);
51815181 valueFlowGenericForward (startTok->link ()->next (), scope2->bodyEnd , a1, settings);
51825182
51835183 if (is1) {
5184- OppositeExpressionAnalyzer a2 (true , condTok2, makeConditionValue (1 , condTok2, false ), tokenlist, settings);
5184+ OppositeExpressionAnalyzer a2 (true , condTok2, makeConditionValue (1 , condTok2, false ), tokenlist, & settings);
51855185 valueFlowGenericForward (startTok->link ()->next (), scope2->bodyEnd , a2, settings);
51865186 }
51875187 }
@@ -7210,20 +7210,20 @@ bool productParams(const std::unordered_map<Key, std::list<ValueFlow::Value>>& v
72107210static void valueFlowInjectParameter (TokenList* tokenlist,
72117211 SymbolDatabase* symboldatabase,
72127212 ErrorLogger* errorLogger,
7213- const Settings* settings,
7213+ const Settings& settings,
72147214 const Scope* functionScope,
72157215 const std::unordered_map<const Variable*, std::list<ValueFlow::Value>>& vars)
72167216{
72177217 const bool r = productParams (vars, [&](const std::unordered_map<const Variable*, ValueFlow::Value>& arg) {
7218- MultiValueFlowAnalyzer a (arg, tokenlist, settings, symboldatabase);
7218+ MultiValueFlowAnalyzer a (arg, tokenlist, & settings, symboldatabase);
72197219 valueFlowGenericForward (const_cast <Token*>(functionScope->bodyStart ), functionScope->bodyEnd , a, settings);
72207220 });
72217221 if (!r) {
72227222 std::string fname = " <unknown>" ;
72237223 Function* f = functionScope->function ;
72247224 if (f)
72257225 fname = f->name ();
7226- if (settings-> debugwarnings )
7226+ if (settings. debugwarnings )
72277227 bailout (tokenlist, errorLogger, functionScope->bodyStart , " Too many argument passed to " + fname);
72287228 }
72297229}
@@ -7387,7 +7387,7 @@ IteratorRange<Iterator> MakeIteratorRange(Iterator start, Iterator last)
73877387 return {start, last};
73887388}
73897389
7390- static void valueFlowSubFunction (TokenList* tokenlist, SymbolDatabase* symboldatabase, ErrorLogger* errorLogger, const Settings* settings)
7390+ static void valueFlowSubFunction (TokenList* tokenlist, SymbolDatabase* symboldatabase, ErrorLogger* errorLogger, const Settings& settings)
73917391{
73927392 int id = 0 ;
73937393 for (const Scope* scope : MakeIteratorRange (symboldatabase->functionScopes .crbegin (), symboldatabase->functionScopes .crend ())) {
@@ -7401,9 +7401,9 @@ static void valueFlowSubFunction(TokenList* tokenlist, SymbolDatabase* symboldat
74017401 const Function * const calledFunction = tok->function ();
74027402 if (!calledFunction) {
74037403 // library function?
7404- const std::string& returnValue (settings-> library .returnValue (tok));
7404+ const std::string& returnValue (settings. library .returnValue (tok));
74057405 if (!returnValue.empty ())
7406- valueFlowLibraryFunction (tok->next (), returnValue, settings);
7406+ valueFlowLibraryFunction (tok->next (), returnValue, & settings);
74077407 continue ;
74087408 }
74097409
@@ -7433,7 +7433,7 @@ static void valueFlowSubFunction(TokenList* tokenlist, SymbolDatabase* symboldat
74337433 });
74347434 // Remove uninit values if argument is passed by value
74357435 if (argtok->variable () && !argtok->variable ()->isPointer () && argvalues.size () == 1 && argvalues.front ().isUninitValue ()) {
7436- if (CheckUninitVar::isVariableUsage (tokenlist->isCPP (), argtok, settings-> library , false , CheckUninitVar::Alloc::NO_ALLOC, 0 ))
7436+ if (CheckUninitVar::isVariableUsage (tokenlist->isCPP (), argtok, settings. library , false , CheckUninitVar::Alloc::NO_ALLOC, 0 ))
74377437 continue ;
74387438 }
74397439
@@ -7665,7 +7665,7 @@ static void valueFlowUninit(TokenList* tokenlist, SymbolDatabase* /*symbolDataba
76657665 continue ;
76667666 }
76677667 MemberExpressionAnalyzer analyzer (memVar.nameToken ()->str (), tok, uninitValue, tokenlist, settings);
7668- valueFlowGenericForward (tok->next (), tok->scope ()->bodyEnd , analyzer, settings);
7668+ valueFlowGenericForward (tok->next (), tok->scope ()->bodyEnd , analyzer, * settings);
76697669
76707670 for (auto && p : *analyzer.partialReads ) {
76717671 Token* tok2 = p.first ;
@@ -8895,7 +8895,7 @@ void ValueFlow::setValues(TokenList *tokenlist, SymbolDatabase* symboldatabase,
88958895 valueFlowSymbolic (tokenlist, symboldatabase, settings);
88968896 valueFlowBitAnd (tokenlist, settings);
88978897 valueFlowSameExpressions (tokenlist, settings);
8898- valueFlowConditionExpressions (tokenlist, symboldatabase, errorLogger, settings);
8898+ valueFlowConditionExpressions (tokenlist, symboldatabase, errorLogger, * settings);
88998899
89008900 const std::uint64_t stopTime = getValueFlowStopTime (settings);
89018901
@@ -8931,7 +8931,7 @@ void ValueFlow::setValues(TokenList *tokenlist, SymbolDatabase* symboldatabase,
89318931 if (std::time (nullptr ) < stopTime)
89328932 valueFlowForLoop (tokenlist, symboldatabase, errorLogger, settings);
89338933 if (std::time (nullptr ) < stopTime)
8934- valueFlowSubFunction (tokenlist, symboldatabase, errorLogger, settings);
8934+ valueFlowSubFunction (tokenlist, symboldatabase, errorLogger, * settings);
89358935 if (std::time (nullptr ) < stopTime)
89368936 valueFlowFunctionReturn (tokenlist, errorLogger, settings);
89378937 if (std::time (nullptr ) < stopTime)
0 commit comments