@@ -2651,8 +2651,11 @@ bool isVariableChanged(const Token *tok, int indirect, const Settings *settings,
26512651 const Token * ptok = tok2;
26522652 while (Token::Match (ptok->astParent (), " .|::|[" ))
26532653 ptok = ptok->astParent ();
2654+ int pindirect = indirect;
2655+ if (indirect == 0 && astIsLHS (tok2) && Token::Match (ptok, " . %var%" ) && astIsPointer (ptok->next ()))
2656+ pindirect = 1 ;
26542657 bool inconclusive = false ;
2655- bool isChanged = isVariableChangedByFunctionCall (ptok, indirect , settings, &inconclusive);
2658+ bool isChanged = isVariableChangedByFunctionCall (ptok, pindirect , settings, &inconclusive);
26562659 isChanged |= inconclusive;
26572660 if (isChanged)
26582661 return true ;
@@ -3257,6 +3260,8 @@ static ExprUsage getFunctionUsage(const Token* tok, int indirect, const Settings
32573260 continue ;
32583261 if (arg->isReference ())
32593262 return ExprUsage::PassedByReference;
3263+ if (arg->isPointer () && indirect == 1 )
3264+ return ExprUsage::PassedByReference;
32603265 }
32613266 if (!args.empty () && indirect == 0 && !addressOf)
32623267 return ExprUsage::Used;
@@ -3301,6 +3306,8 @@ ExprUsage getExprUsage(const Token* tok, int indirect, const Settings* settings,
33013306 parent = parent->astParent ();
33023307 if (Token::Match (parent, " %assign%" ) && (astIsRHS (tok) || astIsLHS (parent->astOperand1 ())))
33033308 return ExprUsage::NotUsed;
3309+ if (Token::Match (parent, " ++|--" ))
3310+ return ExprUsage::NotUsed;
33043311 if (parent->isConstOp ())
33053312 return ExprUsage::NotUsed;
33063313 if (parent->isCast ())
0 commit comments