diff --git a/lib/checkmemoryleak.cpp b/lib/checkmemoryleak.cpp index df9ae990d..f02bbc2d0 100644 --- a/lib/checkmemoryleak.cpp +++ b/lib/checkmemoryleak.cpp @@ -847,7 +847,8 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::listprevious(), "[;{})=] %var%")) + if (Token::Match(tok->previous(), "[;{})=] %var%") || + Token::Match(tok->previous(), "|= %var%")) { AllocType dealloc = getDeallocationType(tok, varid); if (dealloc != No) diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index 4f4c9a329..a7a8d28cd 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -493,6 +493,8 @@ private: // open/close ASSERT_EQUALS(";;alloc;if(var){dealloc;}", getcode("int f; f=open(); if(f>=0)close(f);", "f")); ASSERT_EQUALS(";;alloc;ifv{;}", getcode("int f; f=open(); if(f!=-1 || x);", "f")); + + ASSERT_EQUALS(";;dealloc;", getcode("int f; e |= fclose(f);", "f")); }