From 5dea30519c47618d3d3f95fe3318553cff97ad5a Mon Sep 17 00:00:00 2001 From: Slava Semushin Date: Fri, 17 Jul 2009 23:50:49 +0700 Subject: [PATCH] Fixed ticket #459 (false positive::Member variable not initialized in constructor) http://sourceforge.net/apps/trac/cppcheck/ticket/459 --- src/checkclass.cpp | 2 +- test/testclass.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/checkclass.cpp b/src/checkclass.cpp index 6562f3051..ffb71b671 100644 --- a/src/checkclass.cpp +++ b/src/checkclass.cpp @@ -381,7 +381,7 @@ void CheckClass::checkConstructors(const Token *tok1, const char funcname[]) // Is it a static member variable? std::ostringstream pattern; - pattern << className << "::" << var->name << "="; + pattern << className << " :: " << var->name << " ="; if (Token::findmatch(_tokenizer->tokens(), pattern.str().c_str())) continue; diff --git a/test/testclass.cpp b/test/testclass.cpp index a6d81cf27..fe6b0761d 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -204,6 +204,19 @@ private: " float f;\n" "};\n"); ASSERT_EQUALS("[test.cpp:6]: (style) Member variable not initialized in the constructor 'B::f'\n", errout.str()); + + checkUninitVar("class C\n" + "{\n" + " FILE *fp;\n" + "\n" + "public:\n" + " C(FILE *fp);\n" + "};\n" + "\n" + "C::C(FILE *fp) {\n" + " C::fp = fp;\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void uninitVarEnum()