From b9ee867344fcfcba3b1caaa31dd5d049ae15693d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 5 May 2011 21:26:18 +0200 Subject: [PATCH] Fixed #2764 (False positive: Uninitialized variable '&(x[0])') --- lib/checkuninitvar.cpp | 1 + test/testuninitvar.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 5cf45e3ec..0e9f22e86 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -384,6 +384,7 @@ private: break; if (tok2->varId() && !Token::Match(tok2->previous(), "&|::") && + !Token::simpleMatch(tok2->tokAt(-2), "& (") && !Token::simpleMatch(tok2->next(), "=")) { // Multiple assignments.. diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 48697ba62..9d6cb849f 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -958,6 +958,12 @@ private: "}\n"); ASSERT_EQUALS("", errout.str()); + checkUninitVar("void f() {\n" + " char a[10], *p;\n" + " p = &(a[10]);\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + checkUninitVar("void f()\n" "{\n" " char c[50] = \"\";\n"