From e989d4b11b294f48aa8a09703e230e2b1f73396d Mon Sep 17 00:00:00 2001 From: PKEuS Date: Sat, 24 Oct 2015 12:06:40 +0200 Subject: [PATCH] Support C++11 array initialization in CheckUninitVar (#7010) --- lib/checkuninitvar.cpp | 2 +- test/testuninitvar.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 805f34db1..62afbafc6 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -78,7 +78,7 @@ void CheckUninitVar::checkScope(const Scope* scope) tok = tok->next(); while (Token::simpleMatch(tok->link(), "] [")) tok = tok->link()->next(); - if (Token::simpleMatch(tok->link(), "] =")) + if (Token::Match(tok->link(), "] =|{")) continue; } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 7c1790733..9a8b88f4a 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -67,6 +67,7 @@ private: TEST_CASE(uninitvar_operator); // #6680 TEST_CASE(uninitvar_ternaryexpression); // #4683 TEST_CASE(uninitvar_pointertoarray); + TEST_CASE(uninitvar_cpp11ArrayInit); // #7010 TEST_CASE(trac_4871); TEST_CASE(syntax_error); // Ticket #5073 @@ -1480,6 +1481,14 @@ private: errout.str()); } + void uninitvar_cpp11ArrayInit() { // #7010 + checkUninitVar("double foo(bool flag) {\n" + " double adIHPoint_local[4][4]{};\n" + " function(*adIHPoint_local);\n" + "}"); + ASSERT_EQUALS("", errout.str()); + } + // alloc.. void uninitvar_alloc() { checkUninitVar("void f() {\n"