diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index e8d8ac958..77662060b 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -897,8 +897,10 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const if (tok && tok->isAssignmentOp() && tok->str() != "=") { variables.use(varid1, tok); - if (Token::Match(tok, "%assign% %name%")) + if (Token::Match(tok, "%assign% %name%")) { tok = tok->next(); + variables.read(tok->varId(), tok); + } } if (pre || post) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 38d3be21f..974ba22d5 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -3153,6 +3153,13 @@ private: " return a;\n" "}"); ASSERT_EQUALS("", errout.str()); + + functionVariableUsage("void f() {\n" + " Fred fred;\n" + " int *a; a = b;\n" + " fred += a;\n" + "}"); + ASSERT_EQUALS("", errout.str()); } void localvarFor() {