From 8788e58cbb8963ba4deb07889fbaabdf76e89be9 Mon Sep 17 00:00:00 2001 From: PKEuS Date: Tue, 30 Sep 2014 13:55:21 +0200 Subject: [PATCH] Fixed false positive #5327: fclose as inner function call --- lib/checkmemoryleak.cpp | 2 +- test/testmemleak.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/checkmemoryleak.cpp b/lib/checkmemoryleak.cpp index 1ea1a5739..07801b671 100644 --- a/lib/checkmemoryleak.cpp +++ b/lib/checkmemoryleak.cpp @@ -931,7 +931,7 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::listprevious(), "[;{})=|+-] ::| %var%")) { + if (Token::Match(tok->previous(), "%op%|;|{|}|) ::| %var%") || (Token::Match(tok->previous(), "( ::| %var%") && (!rettail || rettail->str() != "loop"))) { if (Token::Match(tok, "%varid% ?", varid)) tok = tok->tokAt(2); diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index e02dee4b2..51b97d71e 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -556,6 +556,7 @@ private: ASSERT_EQUALS(";;dealloc;", getcode("int f; e |= fclose(f);", "f")); ASSERT_EQUALS(";;dealloc;", getcode("int f; e += fclose(f);", "f")); + ASSERT_EQUALS(";;dealloc;", getcode("int f; foo(fclose(f));", "f")); // fcloseall.. ASSERT_EQUALS(";;alloc;;", getcode("char *s; s = malloc(10); fcloseall();", "s"));