From c78d99dc078563530fac49eed908f8d847ff85bb Mon Sep 17 00:00:00 2001 From: Simon Martin Date: Thu, 27 Aug 2015 23:56:26 +0200 Subject: [PATCH] Ticket #6954: Properly handle pointers to arrays in CheckUnunsedVar. --- lib/checkunusedvar.cpp | 2 ++ test/testunusedvar.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index a2583e3d1..931b2cf5d 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -689,6 +689,8 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const type = Variables::reference; else if (i->nameToken()->previous()->str() == "*" && i->nameToken()->strAt(-2) == "*") type = Variables::pointerPointer; + else if (i->isPointerToArray()) + type = Variables::pointerPointer; else if (i->isPointer()) type = Variables::pointer; else if (_tokenizer->isC() || diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 20b486771..7bad415d8 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -91,6 +91,7 @@ private: TEST_CASE(localvar45); // ticket #4899 TEST_CASE(localvar46); // ticket #5491 (C++11 style initialization) TEST_CASE(localvar47); // ticket #6603 + TEST_CASE(localvar48); // ticket #6954 TEST_CASE(localvaralias1); TEST_CASE(localvaralias2); // ticket #1637 TEST_CASE(localvaralias3); // ticket #1639 @@ -1894,6 +1895,13 @@ private: ASSERT_EQUALS("[test.cpp:3]: (style) Variable 'retrieveCount' is assigned a value that is never used.\n", errout.str()); } + void localvar48() { // #6954 + functionVariableUsage("void foo() {\n" + " long (*pKoeff)[256] = new long[9][256];\n" + "}"); + ASSERT_EQUALS("", errout.str()); + } + void localvaralias1() { functionVariableUsage("void foo()\n" "{\n"