From 35583293ec517165f2a8846054bf936cc26566b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 25 Feb 2009 19:20:23 +0000 Subject: [PATCH] memory leak: Fixed a false positive when all is given --- src/checkmemoryleak.cpp | 6 ------ test/testmemleak.cpp | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/checkmemoryleak.cpp b/src/checkmemoryleak.cpp index 4aae5bbdb..4fb264f3c 100644 --- a/src/checkmemoryleak.cpp +++ b/src/checkmemoryleak.cpp @@ -892,12 +892,6 @@ void CheckMemoryLeakClass::simplifycode(Token *tok, bool &all) // Reducing if.. else if (_settings._showAll) { - if (Token::Match(tok2->next(), "if assign|dealloc|use ; else")) - { - all = true; - erase(tok2->next(), tok2->tokAt(3)); - done = false; - } if (Token::Match(tok2, "[;{}] if { assign|dealloc|use ; return ; } !!else")) { all = true; diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index f2f80a7f0..807bb7da0 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -85,6 +85,7 @@ private: TEST_CASE(ifelse7); TEST_CASE(ifelse8); TEST_CASE(ifelse9); + TEST_CASE(ifelse10); TEST_CASE(if1); TEST_CASE(if2); @@ -513,6 +514,24 @@ private: } + void ifelse10() + { + check("static char *f()\n" + "{\n" + " char *s = new char[10];\n" + " if ( ghfgf )\n" + " {\n" + " str[0] = s;\n" + " }\n" + " else\n" + " {\n" + " str[0] = s;\n" + " }\n" + "}\n", true); + ASSERT_EQUALS(std::string(""), errout.str()); + } + + void if1()