From a2a6eebb0106f836af246f20cb584cb716bdd74c Mon Sep 17 00:00:00 2001 From: Slava Semushin Date: Fri, 22 May 2009 21:47:40 +0700 Subject: [PATCH] Fixed ticket #324 (Teach about fcloseall() function) http://apps.sourceforge.net/trac/cppcheck/ticket/324 --- src/checkmemoryleak.cpp | 3 ++- test/testmemleak.cpp | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/checkmemoryleak.cpp b/src/checkmemoryleak.cpp index 5da37475c..8732fbf28 100644 --- a/src/checkmemoryleak.cpp +++ b/src/checkmemoryleak.cpp @@ -188,7 +188,8 @@ CheckMemoryLeakClass::AllocType CheckMemoryLeakClass::GetDeallocationType(const if (Token::simpleMatch(tok, std::string("g_free ( " + names + " ) ;").c_str())) return gMalloc; - if (Token::simpleMatch(tok, std::string("fclose ( " + names + " )").c_str())) + if (Token::simpleMatch(tok, std::string("fclose ( " + names + " )").c_str()) || + Token::simpleMatch(tok, "fcloseall ( )")) return File; if (Token::simpleMatch(tok, std::string("pclose ( " + names + " )").c_str())) diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index 33d9f0e2c..3e84dbc7a 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -215,6 +215,7 @@ private: TEST_CASE(stdstring); TEST_CASE(strndup_function); + TEST_CASE(fcloseall_function); } @@ -2177,6 +2178,16 @@ private: ASSERT_EQUALS(std::string("[test.cpp:4]: (error) Memory leak: out\n"), errout.str()); } + void fcloseall_function() + { + check("void f()\n" + "{\n" + " FILE *f = fopen(fname, str);\n" + " fcloseall();\n" + "}\n"); + ASSERT_EQUALS(std::string(""), errout.str()); + } + }; REGISTER_TEST(TestMemleak)