diff --git a/lib/checkmemoryleak.cpp b/lib/checkmemoryleak.cpp index 9f548be11..1ea1a5739 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(), "[;{})=|+-] ::| %var%")) { if (Token::Match(tok, "%varid% ?", varid)) tok = tok->tokAt(2); diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index 26ebae9b8..e02dee4b2 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -555,6 +555,7 @@ private: ASSERT_EQUALS(";;;dealloc;assign;;", getcode(";int res; res = close(res);", "res")); ASSERT_EQUALS(";;dealloc;", getcode("int f; e |= fclose(f);", "f")); + ASSERT_EQUALS(";;dealloc;", getcode("int f; e += fclose(f);", "f")); // fcloseall.. ASSERT_EQUALS(";;alloc;;", getcode("char *s; s = malloc(10); fcloseall();", "s"));