From 01759b03f9b73e6b206dd9d4b2294a70d6fb4179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 2 Jan 2012 11:25:13 +0100 Subject: [PATCH] Fixed #3463 (Uninitialized variable variable pointer) --- lib/checkuninitvar.cpp | 2 +- test/testuninitvar.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index c4a1fe8d2..7a13b94bf 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1252,7 +1252,7 @@ bool CheckUninitVar::isVariableUsage(const Token *vartok, bool pointer) const return false; } - if (vartok->previous()->str() != "&" || !Token::Match(vartok->tokAt(-2), "[(,=]")) { + if (vartok->previous()->str() != "&" || !Token::Match(vartok->tokAt(-2), "[(,=?:]")) { return true; } } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index ff0cd5a0b..96e8235cf 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -1752,6 +1752,13 @@ private: "}"); ASSERT_EQUALS("[test.cpp:3]: (error) Uninitialized variable: x\n", errout.str()); + // ?: + checkUninitVar2("int f(int *ptr) {\n" + " int a;\n" + " int *p = ptr ? ptr : &a;\n" + "}"); + ASSERT_EQUALS("", errout.str()); + // = { .. } checkUninitVar2("int f() {\n" " int a;\n"