Skip to content

Commit 91f15aa

Browse files
Fix #12473 FN uninitvar with pointer member (regression) (#6039)
1 parent 950e894 commit 91f15aa

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

lib/checkuninitvar.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,7 @@ void CheckUninitVar::valueFlowUninit()
16581658
(!isVariableChangedByFunctionCall(v->tokvalue, v->indirect, mSettings, &inconclusive) || inconclusive))
16591659
continue;
16601660
if (usage != ExprUsage::Used) {
1661-
if (!(Token::Match(tok->astParent(), ". %name% (") && uninitderef) &&
1661+
if (!(Token::Match(tok->astParent(), ". %name% (|[") && uninitderef) &&
16621662
isVariableChanged(tok, v->indirect, mSettings, mTokenizer->isCPP()))
16631663
continue;
16641664
if (isVariableChangedByFunctionCall(tok, v->indirect, mSettings, &inconclusive) || inconclusive)

test/testuninitvar.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6414,6 +6414,13 @@ class TestUninitVar : public TestFixture {
64146414
" return s[0].x;\n"
64156415
"}\n");
64166416
ASSERT_EQUALS("", errout.str());
6417+
6418+
valueFlowUninit("struct S { int* p; };\n" // #12473
6419+
"void f() {\n"
6420+
" struct S s;\n"
6421+
" s.p[0] = 0;\n"
6422+
"}\n");
6423+
ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: s.p\n", errout.str());
64176424
}
64186425

64196426
void valueFlowUninitBreak() { // Do not show duplicate warnings about the same uninitialized value

0 commit comments

Comments
 (0)