From 481fa532a8de99f655695a61c1c0bf287bba1719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 26 Dec 2011 18:17:13 +0100 Subject: [PATCH] Uninitialized variables: Fixed false positives caused by recent improvement when variable is potentially initialized in else block. --- lib/checkuninitvar.cpp | 2 +- test/testuninitvar.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 19da2bde2..ecd5f5abb 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1157,7 +1157,7 @@ bool CheckUninitVar::checkScopeForVariable(const Token *tok, const unsigned int if (initif && initelse) return true; - if (initif || initelse) + if (initif || initelse || possibleInitElse) ++number_of_if; } } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index de0b3434a..23a45e9c3 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -1909,6 +1909,14 @@ private: "}"); ASSERT_EQUALS("", errout.str()); + checkUninitVar2("void f() {\n" + " int a=0, b;\n" + " if (x) { }\n" + " else if (y==2) { a=1; b=2; }\n" + " if (a) { ++b; }\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + // asm checkUninitVar2("void f() {\n" " int x;\n"