From 045f21ee48c278ffc645c3ed56acbbe2746548b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 5 Sep 2021 16:35:08 +0200 Subject: [PATCH] Fixed #10142 (FP uninitMemberVar with std::map) --- lib/symboldatabase.cpp | 2 +- test/testconstructors.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index c4f777f29..54e9a2cf3 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1955,7 +1955,7 @@ const Token * Variable::declEndToken() const { Token const * declEnd = typeStartToken(); while (declEnd && !Token::Match(declEnd, "[;,)={]")) { - if (declEnd->link() && Token::Match(declEnd,"(|[")) + if (declEnd->link() && Token::Match(declEnd,"(|[|<")) declEnd = declEnd->link(); declEnd = declEnd->next(); } diff --git a/test/testconstructors.cpp b/test/testconstructors.cpp index b67635b5f..7b10120ed 100644 --- a/test/testconstructors.cpp +++ b/test/testconstructors.cpp @@ -108,6 +108,7 @@ private: TEST_CASE(initvar_2constructors); // BUG 2270353 TEST_CASE(initvar_constvar); TEST_CASE(initvar_staticvar); + TEST_CASE(initvar_brace_init); TEST_CASE(initvar_union); TEST_CASE(initvar_delegate); // ticket #4302 TEST_CASE(initvar_delegate2); @@ -1046,6 +1047,19 @@ private: } + void initvar_brace_init() { // #10142 + check("class C\n" + "{\n" + "public:\n" + " C() {}\n" + "\n" + "private:\n" + " std::map * values_{};\n" + "};"); + ASSERT_EQUALS("", errout.str()); + } + + void initvar_union() { check("class Fred\n" "{\n"