From 28d2bdc2932795f7562d7e544d399d6b97f19ffb Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 28 Jan 2026 14:12:40 +0100 Subject: [PATCH 1/3] Update checkuninitvar.cpp --- lib/checkuninitvar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 8463f6a1c8e..5f90ed93d7d 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -906,7 +906,7 @@ bool CheckUninitVar::checkIfForWhileHead(const Token *startparentheses, const Va continue; uninitvarError(errorToken, errorToken->expressionString(), alloc); } - return true; + return !Token::Match(tok->astParent(), "!|%comp%"); } // skip sizeof / offsetof if (isUnevaluated(tok)) From 5ba9b6172de63a081743786d70e12e0c872f1fdb Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 28 Jan 2026 14:13:58 +0100 Subject: [PATCH 2/3] Update testuninitvar.cpp --- test/testuninitvar.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index b3c988e5b00..d915ce4cc00 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -2139,6 +2139,24 @@ class TestUninitVar : public TestFixture { " *(p + i) = 0;\n" "}\n"); ASSERT_EQUALS("", errout_str()); + + checkUninitVar("int* f() {\n" // #14448 + " int* p = (int*)malloc(4);\n" + " if (!p)\n" + " return nullptr;\n" + " if (*p) {}\n" + " return p;\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:5:9]: (error) Memory is allocated but not initialized: *p [uninitdata]\n", errout_str()); + + checkUninitVar("int* f() {\n" + " int* p = (int*)malloc(4);\n" + " if (p == nullptr)\n" + " return nullptr;\n" + " if (*p) {}\n" + " return p;\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:5:9]: (error) Memory is allocated but not initialized: *p [uninitdata]\n", errout_str()); } // class / struct.. From b5137da03e232c9b5e1bda1e34585c2140b47c85 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 28 Jan 2026 14:21:23 +0100 Subject: [PATCH 3/3] Update testuninitvar.cpp --- test/testuninitvar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index d915ce4cc00..3b2e82c4b50 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -2035,7 +2035,7 @@ class TestUninitVar : public TestFixture { " return;\n" " char c = *s;\n" "}"); - TODO_ASSERT_EQUALS("[test.cpp:6]: (error) Memory is allocated but not initialized: s\n", "", errout_str()); + ASSERT_EQUALS("[test.cpp:6:15]: (error) Memory is allocated but not initialized: s [uninitdata]\n", errout_str()); // #3708 - false positive when using ptr typedef checkUninitVar("void f() {\n"