diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 5cffbe48b..4ede9290a 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -907,7 +907,7 @@ void SymbolDatabase::createSymbolDatabaseNeedInitialization() unknown = true; } } - } else if (!var->hasDefault()) + } else if (!var->hasDefault() && !var->isStatic()) needInitialization = true; } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index b1506f809..58e8d0459 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -4832,6 +4832,18 @@ private: " if (!isNull) {}\n" "}\n"); ASSERT_EQUALS("", errout.str()); + + // #10119 + valueFlowUninit("struct Foo {\n" + " int i{};\n" + " static const float cf;\n" + "};\n" + "const float Foo::cf = 0.1f;\n" + "int bar() {\n" + " Foo f;\n" + " return f.i;\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void uninitvar_ipa() {