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"