Fixed #131 (Regression: leak reported by 1.27 is not reported by 1.29)
The leak will be reported as a definite bug again. Not just a possible bug. cppcheck don't know if the execution path is possible, but it knows that if the execution path is taken the memory leak will be certain.
This commit is contained in:
parent
a81b6487bf
commit
ed98f1b367
|
@ -1025,8 +1025,14 @@ void CheckMemoryLeakInFunction::simplifycode(Token *tok, bool &all)
|
|||
done = false;
|
||||
}
|
||||
|
||||
// Reduce "if if" => "if"
|
||||
else if (Token::Match(tok2, "if if|callfunc"))
|
||||
{
|
||||
Token::eraseTokens(tok2, tok2->tokAt(2));
|
||||
done = false;
|
||||
}
|
||||
|
||||
if (Token::simpleMatch(tok2->next(), "if"))
|
||||
else if (Token::simpleMatch(tok2->next(), "if"))
|
||||
{
|
||||
// Delete empty if that is not followed by an else
|
||||
if (Token::Match(tok2->next(), "if ; !!else"))
|
||||
|
@ -1075,13 +1081,6 @@ void CheckMemoryLeakInFunction::simplifycode(Token *tok, bool &all)
|
|||
done = false;
|
||||
}
|
||||
|
||||
// Reduce "if if" => "if"
|
||||
else if (Token::simpleMatch(tok2, "if if"))
|
||||
{
|
||||
Token::eraseTokens(tok2, tok2->tokAt(2));
|
||||
done = false;
|
||||
}
|
||||
|
||||
// Reduce "if return ; alloc ;" => "alloc ;"
|
||||
else if (Token::Match(tok2, "[;{}] if return ; alloc ;"))
|
||||
{
|
||||
|
|
|
@ -203,6 +203,7 @@ private:
|
|||
TEST_CASE(func12);
|
||||
TEST_CASE(func13);
|
||||
TEST_CASE(func14);
|
||||
TEST_CASE(func15);
|
||||
|
||||
TEST_CASE(allocfunc1);
|
||||
|
||||
|
@ -1426,6 +1427,21 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void func15()
|
||||
{
|
||||
check("static void a()\n"
|
||||
"{ return true; }\n"
|
||||
"\n"
|
||||
"static void b()\n"
|
||||
"{\n"
|
||||
" char *p = malloc(100);\n"
|
||||
" if (a()) return;\n" // <- memory leak
|
||||
" free(p);\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("[test.cpp:7]: (error) Memory leak: p\n", errout.str());
|
||||
}
|
||||
|
||||
|
||||
|
||||
void allocfunc1()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue