From cbdae275ed07898d7d1d1bcef5c2c445c4064a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Tue, 16 Nov 2010 20:01:57 +0100 Subject: [PATCH] Uninitialized variables: Fixed false negative. Ticket: #2207 --- lib/checkuninitvar.cpp | 2 +- test/testuninitvar.cpp | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index a4ed4649c..52d9834b1 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -465,7 +465,7 @@ private: } // Used.. - if (Token::Match(tok.previous(), "[[(,+-*/] %var% []),+-*/]")) + if (Token::Match(tok.previous(), "[[(,+-*/] %var% []),;+-*/]")) { use(checks, &tok); return &tok; diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 7cabc5b29..546638ad4 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -66,6 +66,13 @@ private: void uninitvar1() { + // Ticket #2207 - False negative + checkUninitVar("void foo() {\n" + " int a;\n" + " b = c - a;\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:3]: (error) Uninitialized variable: a\n", errout.str()); + // dereferencing uninitialized pointer.. checkUninitVar("static void foo()\n" "{\n" @@ -546,16 +553,6 @@ private: "}\n"); ASSERT_EQUALS("", errout.str()); - // Ticket #2207 - False negative - checkUninitVar("void foo(int x) {\n" - " int a;\n" - " if (x)\n" - " a = 1;\n" - " b = c - a;\n" - "}\n"); - TODO_ASSERT_EQUALS("[test.cpp:5] (error) uninitialized variable a", errout.str()); - ASSERT_EQUALS("", errout.str()); - // Ticket #2207 - False positive checkUninitVar("void foo(int x) {\n" " int a;\n"