diff --git a/lib/checkautovariables.cpp b/lib/checkautovariables.cpp index e35f92a63..3a0221b2d 100644 --- a/lib/checkautovariables.cpp +++ b/lib/checkautovariables.cpp @@ -198,7 +198,10 @@ void CheckAutoVariables::autoVariables() { errorAutoVariableAssignment(tok); } - //Critical assignment + else if (Token::Match(tok, "[;{}] * %var% = & %var%") && errorAv(tok->tokAt(2), tok->tokAt(5))) + { + errorAutoVariableAssignment(tok); + } else if (Token::Match(tok, "[;{}] %var% [ %any% ] = & %var%") && errorAv(tok->tokAt(1), tok->tokAt(7))) { errorAutoVariableAssignment(tok); diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 1f914d79f..cefbe20c6 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -77,8 +77,9 @@ private: { check("void func1(int **res)\n" "{\n" - " int num=2;" - "res=#}"); + " int num = 2;\n" + " *res = #\n" + "}"); ASSERT_EQUALS("[test.cpp:3]: (error) Wrong assignment of an auto-variable to an effective parameter of a function\n", errout.str()); check("void func1(int **res)\n"