Skip to content

Commit 4654b65

Browse files
Fix #11890 FP uninitvar for address taken in init list (#5360)
1 parent 5a7c7b9 commit 4654b65

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

lib/astutils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3149,7 +3149,7 @@ static ExprUsage getFunctionUsage(const Token* tok, int indirect, const Settings
31493149
} else if (ftok->isControlFlowKeyword()) {
31503150
return ExprUsage::Used;
31513151
} else if (ftok->str() == "{") {
3152-
return ExprUsage::Used;
3152+
return indirect == 0 ? ExprUsage::Used : ExprUsage::Inconclusive;
31533153
} else {
31543154
const bool isnullbad = settings->library.isnullargbad(ftok, argnr + 1);
31553155
if (indirect == 0 && astIsPointer(tok) && !addressOf && isnullbad)

test/testuninitvar.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6197,6 +6197,12 @@ class TestUninitVar : public TestFixture {
61976197
" x = i;\n"
61986198
"}\n");
61996199
ASSERT_EQUALS("[test.cpp:3]: (error) Uninitialized variable: i\n", errout.str());
6200+
6201+
valueFlowUninit("void f() {\n" // #11890
6202+
" int x;\n"
6203+
" int* a[] = { &x };\n"
6204+
"}\n");
6205+
ASSERT_EQUALS("", errout.str());
62006206
}
62016207

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

0 commit comments

Comments
 (0)