diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 347b5ff83..5cf45e3ec 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -507,6 +507,11 @@ private: const Token *tok2 = tok.next(); if (tok2->str() == "[" && Token::simpleMatch(tok2->link(), "] =")) { + if (use_dead_pointer(checks, &tok)) + { + return &tok; + } + parserhs(tok2, checks); tok2 = tok2->link()->next(); } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 796c7a71c..48697ba62 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -127,6 +127,13 @@ private: "}\n"); ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: p\n", errout.str()); + checkUninitVar("static void foo()\n" + "{\n" + " int *p;\n" + " p[0] = 135;\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: p\n", errout.str()); + checkUninitVar("static void foo()\n" "{\n" " int *x;\n"