From 948bb8df948f4196be0a022b9df128e1fac2d09a Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 30 Mar 2022 15:49:45 +0200 Subject: [PATCH] Add test for #10089, #10280 (#3958) --- test/testuninitvar.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 883bb16e7..182378cb1 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -5214,6 +5214,33 @@ private: " return testData;\n" "}\n"); ASSERT_EQUALS("", errout.str()); + + // #10089 + valueFlowUninit("typedef union {\n" + " struct { int x; };\n" + " int v[1];\n" + "} U;\n" + "void init(int* d) {\n" + " *d = 42;\n" + "}\n" + "void f() {\n" + " U u;\n" + " init(u.v);\n" + " printf(\"%d\\n\", u.x);\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + + // #10280 + valueFlowUninit("union U {\n" + " char c[2];\n" + " uint16_t u16;\n" + "};\n" + "uint16_t f(std::istream& is) {\n" + " U u;\n" + " is.read(u.c, 2);\n" + " return u.u16;\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void valueFlowUninitBreak() { // Do not show duplicate warnings about the same uninitialized value