From 8fea399141d267140e500123318a606db5866c80 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:51:22 +0100 Subject: [PATCH 1/4] Update checkuninitvar.cpp --- lib/checkuninitvar.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 8463f6a1c8e..8f044acb44b 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -844,7 +844,8 @@ bool CheckUninitVar::checkScopeForVariable(const Token *tok, const Variable& var } // assume that variable is assigned - return true; + if (!Token::simpleMatch(tok->astParent(), "<<")) + return true; } } } From ba8438fcea9d7a2118a365ce0c635f3a4171e144 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:52:54 +0100 Subject: [PATCH 2/4] Update testuninitvar.cpp --- test/testuninitvar.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index b3c988e5b00..4241dec0a05 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -3163,13 +3163,21 @@ class TestUninitVar : public TestFixture { ASSERT_EQUALS("", errout_str()); } - void uninitvar12() { // 10218 - const char code[] = "void fp() {\n" + void uninitvar12() { + const char code[] = "void fp() {\n" // 10218 " std::stringstream ss;\n" " for (int i; ss >> i;) {}\n" "}"; checkUninitVar(code); ASSERT_EQUALS("", errout_str()); + + const char code2[] = "void f() {\n" // #13908 + " int* i = new int;\n" + " std::cout << i << \", \" << *i;\n" + " delete i;\n" + "}\n"; + checkUninitVar(code2); + ASSERT_EQUALS("[test.cpp:3:32]: (error) Memory is allocated but not initialized: i [uninitdata]\n", errout_str()); } void uninitvar13() { // #9772 - FP From a62c0cc260ca8b2f9e3fbd7b6aede5cf133a140b Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 29 Jan 2026 10:12:20 +0100 Subject: [PATCH 3/4] Update testuninitvar.cpp --- test/testuninitvar.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 4241dec0a05..6e0ba2323a1 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -569,7 +569,14 @@ class TestUninitVar : public TestFixture { " std::cout << *p << 1;\n" "}"); ASSERT_EQUALS("[test.cpp:3:17]: (error) Uninitialized variable: p [legacyUninitvar]\n", errout_str()); - } + } + + checkUninitVar("void f() {\n" // #13908 + " int* i = new int;\n" + " std::cout << i << \", \" << *i;\n" + " delete i;\n" + "}\n"; + ASSERT_EQUALS("[test.cpp:3:32]: (error) Memory is allocated but not initialized: i [uninitdata]\n", errout_str()); } // #8494 : Overloaded & operator @@ -3163,21 +3170,13 @@ class TestUninitVar : public TestFixture { ASSERT_EQUALS("", errout_str()); } - void uninitvar12() { - const char code[] = "void fp() {\n" // 10218 + void uninitvar12() { // 10218 + const char code[] = "void fp() {\n" " std::stringstream ss;\n" " for (int i; ss >> i;) {}\n" "}"; checkUninitVar(code); ASSERT_EQUALS("", errout_str()); - - const char code2[] = "void f() {\n" // #13908 - " int* i = new int;\n" - " std::cout << i << \", \" << *i;\n" - " delete i;\n" - "}\n"; - checkUninitVar(code2); - ASSERT_EQUALS("[test.cpp:3:32]: (error) Memory is allocated but not initialized: i [uninitdata]\n", errout_str()); } void uninitvar13() { // #9772 - FP From 6bd2c2b97cd4d79e1c7a2e6a97f8db056753004e Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 29 Jan 2026 10:17:16 +0100 Subject: [PATCH 4/4] Update testuninitvar.cpp --- test/testuninitvar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 6e0ba2323a1..331bdf8d3cb 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -569,13 +569,13 @@ class TestUninitVar : public TestFixture { " std::cout << *p << 1;\n" "}"); ASSERT_EQUALS("[test.cpp:3:17]: (error) Uninitialized variable: p [legacyUninitvar]\n", errout_str()); - } + } checkUninitVar("void f() {\n" // #13908 " int* i = new int;\n" " std::cout << i << \", \" << *i;\n" " delete i;\n" - "}\n"; + "}\n"); ASSERT_EQUALS("[test.cpp:3:32]: (error) Memory is allocated but not initialized: i [uninitdata]\n", errout_str()); }