From ccb831d3759edff997d5bf9b91d7d9bdaf8ab4ad Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Fri, 6 May 2011 18:18:48 -0400 Subject: [PATCH] fix regression #1819 (False positive: auto variable assignment (unseen typedef)) --- lib/checkautovariables.cpp | 4 +++- test/testautovariables.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/checkautovariables.cpp b/lib/checkautovariables.cpp index 43bb0783a..27d302a0f 100644 --- a/lib/checkautovariables.cpp +++ b/lib/checkautovariables.cpp @@ -97,7 +97,9 @@ void CheckAutoVariables::autoVariables() //Critical assignment if (Token::Match(tok, "[;{}] * %var% = & %var%") && errorAv(tok->tokAt(2), tok->tokAt(5))) { - errorAutoVariableAssignment(tok); + const Variable * var = symbolDatabase->getVariableFromVarId(tok->tokAt(5)->varId()); + if (var && (!var->isClass() || var->type())) + errorAutoVariableAssignment(tok); } else if (Token::Match(tok, "[;{}] %var% [ %any% ] = & %var%") && errorAv(tok->tokAt(1), tok->tokAt(7))) { diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 23ddd799c..fdcb6bc1f 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -236,7 +236,7 @@ private: " EventPtr event = *eventP;\n" " *actionsP = &event->actions;\n" "}\n"); - ASSERT_EQUALS("[test.cpp:2]: (error) Assigning address of local auto-variable to a function parameter.\n", errout.str()); + ASSERT_EQUALS("", errout.str()); } void returnLocalVariable1()