@@ -7124,14 +7124,15 @@ static void valueFlowContainerSize(const TokenList& tokenlist,
71247124 }
71257125 for (const ValueFlow::Value& value : values)
71267126 setTokenValue (tok, value, settings);
7127- } else if (Token::Match (tok, " %name%|;|{|}|> %var% = {" ) && Token::simpleMatch (tok->linkAt (3 ), " } ;" )) {
7127+ } else if (Token::Match (tok, " %name%|;|{|}|> %var% =" ) && Token::Match (tok->tokAt (2 )->astOperand2 (), " [({]" ) &&
7128+ (tok->tokAt (3 ) == tok->tokAt (2 )->astOperand2 () || settings.library .detectContainer (tok->tokAt (3 )))) {
71287129 Token* containerTok = tok->next ();
71297130 if (containerTok->exprId () == 0 )
71307131 continue ;
71317132 if (astIsContainer (containerTok) && containerTok->valueType ()->container ->size_templateArgNo < 0 ) {
7132- std::vector<ValueFlow::Value> values =
7133- getInitListSize (tok-> tokAt ( 3 ) , containerTok->valueType (), settings);
7134- valueFlowContainerSetTokValue (tokenlist, errorLogger, settings, containerTok, tok-> tokAt ( 3 ) );
7133+ Token* rhs = tok-> tokAt ( 2 )-> astOperand2 ();
7134+ std::vector<ValueFlow::Value> values = getInitListSize (rhs , containerTok->valueType (), settings);
7135+ valueFlowContainerSetTokValue (tokenlist, errorLogger, settings, containerTok, rhs );
71357136 for (const ValueFlow::Value& value : values)
71367137 valueFlowForward (containerTok->next (), containerTok, value, tokenlist, errorLogger, settings);
71377138 }
0 commit comments