diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 27a01ab0382..3c5c51498ba 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -3001,7 +3001,7 @@ bool isVariableChanged(const Variable * var, const Settings &settings, int depth const Token * start = var->declEndToken(); if (!start) return false; - if (Token::Match(start, "; %varid% =", var->declarationId())) + if (Token::Match(start, "; %varid% =", var->declarationId()) && !Token::simpleMatch(start->previous(), ")")) start = start->tokAt(2); if (Token::simpleMatch(start, "=")) { const Token* next = nextAfterAstRightmostLeafGeneric(start); diff --git a/test/testother.cpp b/test/testother.cpp index 0b87a07f160..92fefb72fd3 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -4146,6 +4146,14 @@ class TestOther : public TestFixture { " *o = 1;\n" "}\n"); ASSERT_EQUALS("", errout_str()); + + check("int f() {\n" + " int x = 0;\n" + " int& r(x);\n" + " r = x;\n" + " return r;\n" + "}\n"); + ASSERT_EQUALS("", errout_str()); } void constParameterCallback() {