diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 9eb148f2954..982b74aacd2 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2837,10 +2837,9 @@ bool isExpressionChanged(const Token* expr, const Token* start, const Token* end if (vt->type == ValueType::ITERATOR) ++indirect; } - if (Token::Match(tok->astParent(), "%cop%") && tok2->astParent() && tok2->astParent()->isIncDecOp()) - indirect = 0; - if (isExpressionChangedAt(tok, tok2, indirect, global, settings, cpp, depth)) - return true; + for (int i = 0; i <= indirect; ++i) + if (isExpressionChangedAt(tok, tok2, i, global, settings, cpp, depth)) + return true; } } return false; diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index df1c062ec79..e9ef712a7ca 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -3219,7 +3219,7 @@ struct ExpressionAnalyzer : SingleValueFlowAnalyzer { } Action isAliasModified(const Token* tok, int indirect) const override { - if (value.isSymbolicValue() && tok->astParent() && tok->astParent()->isIncDecOp() && Token::Match(value.tokvalue->astParent(), "%cop%")) + if (value.isSymbolicValue() && tok->exprId() == value.tokvalue->exprId()) indirect = 0; return SingleValueFlowAnalyzer::isAliasModified(tok, indirect); }