From 295f486cdeaf3bcdba9dfb02b12e40148bbe76b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 14 Dec 2011 19:56:58 +0100 Subject: [PATCH] Uninitialized variables: Detect more errors when variable is given as array index. Ticket: #3369 --- lib/checkuninitvar.cpp | 3 +++ test/testuninitvar.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 465a013d4..1fbcc6ac9 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1157,6 +1157,9 @@ bool CheckUninitVar::isVariableUsage(const Token *vartok) const } } + if (vartok->strAt(-1) == "[" || vartok->strAt(1) == "]") + return true; + return false; } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 23f7ba75b..7d86df3f2 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -1707,6 +1707,12 @@ private: "}"); ASSERT_EQUALS("[test.cpp:3]: (error) Uninitialized variable: x\n", errout.str()); + checkUninitVar2("void f() {\n" + " int x;\n" + " str[x] = 0;\n" + "}"); + ASSERT_EQUALS("[test.cpp:3]: (error) Uninitialized variable: x\n", errout.str()); + checkUninitVar2("void f() {\n" " int x;\n" " int y = x & 3;\n"