Memory leak: moved simplifyTokens rule to '--all'
This commit is contained in:
parent
7e8b3c86f6
commit
2018c25d20
|
@ -571,7 +571,9 @@ void CheckMemoryLeakClass::simplifycode(TOKEN *tok)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete "if dealloc ;" and "if use ;" that is not followed by an else..
|
// Delete "if dealloc ;" and "if use ;" that is not followed by an else..
|
||||||
if ((Match(tok2, "[;{}] if dealloc ;") || Match(tok2, "[;{}] if use ;")) &&
|
// This may cause false positives
|
||||||
|
if (_settings._showAll &&
|
||||||
|
(Match(tok2, "[;{}] if dealloc ;") || Match(tok2, "[;{}] if use ;")) &&
|
||||||
!Match(Tokenizer::gettok(tok2,4), "else"))
|
!Match(Tokenizer::gettok(tok2,4), "else"))
|
||||||
{
|
{
|
||||||
erase(tok2->next, Tokenizer::gettok(tok2,3));
|
erase(tok2->next, Tokenizer::gettok(tok2,3));
|
||||||
|
@ -612,13 +614,6 @@ void CheckMemoryLeakClass::simplifycode(TOKEN *tok)
|
||||||
done = false;
|
done = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove "if dealloc ;" if there is no else after it..
|
|
||||||
if (Match(tok2,"if dealloc ;") && !Match(Tokenizer::gettok(tok2,3),"else"))
|
|
||||||
{
|
|
||||||
erase( tok2, Tokenizer::gettok(tok2, 2) );
|
|
||||||
done = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace "loop ;" with ";"
|
// Replace "loop ;" with ";"
|
||||||
if ( Match(tok2->next, "loop ;") )
|
if ( Match(tok2->next, "loop ;") )
|
||||||
{
|
{
|
||||||
|
|
|
@ -86,6 +86,7 @@ private:
|
||||||
TEST_CASE( if1 );
|
TEST_CASE( if1 );
|
||||||
TEST_CASE( if2 );
|
TEST_CASE( if2 );
|
||||||
TEST_CASE( if3 );
|
TEST_CASE( if3 );
|
||||||
|
TEST_CASE( if4 );
|
||||||
|
|
||||||
TEST_CASE( forwhile1 );
|
TEST_CASE( forwhile1 );
|
||||||
TEST_CASE( forwhile2 );
|
TEST_CASE( forwhile2 );
|
||||||
|
@ -220,12 +221,14 @@ private:
|
||||||
{
|
{
|
||||||
check( "void foo()\n"
|
check( "void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" char *str = strdup(\"abc\");\n"
|
" char *str;\n"
|
||||||
|
" if (somecondition)\n"
|
||||||
|
" str = strdup(\"abc\");\n"
|
||||||
" if (somecondition)\n"
|
" if (somecondition)\n"
|
||||||
" DeleteString(str);\n"
|
" DeleteString(str);\n"
|
||||||
"}\n" );
|
"}\n" );
|
||||||
|
|
||||||
ASSERT_EQUALS( std::string("[test.cpp:6]: Memory leak: str\n"), errout.str() );
|
ASSERT_EQUALS( std::string(""), errout.str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -380,7 +383,7 @@ private:
|
||||||
" delete [] s;\n"
|
" delete [] s;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"}\n" );
|
"}\n" );
|
||||||
ASSERT_EQUALS( std::string("[test.cpp:8]: Memory leak: s\n"), errout.str() );
|
ASSERT_EQUALS( std::string(""), errout.str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -423,6 +426,21 @@ private:
|
||||||
ASSERT_EQUALS( std::string(""), errout.str() );
|
ASSERT_EQUALS( std::string(""), errout.str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void if4()
|
||||||
|
{
|
||||||
|
check( "void f()\n"
|
||||||
|
"{\n"
|
||||||
|
" char *s;\n"
|
||||||
|
" bool b = true;\n"
|
||||||
|
" if (b && (s = malloc(256)))\n"
|
||||||
|
" ;\n"
|
||||||
|
" if (b)\n"
|
||||||
|
" free(s);\n"
|
||||||
|
"}\n" );
|
||||||
|
std::string err( errout.str() );
|
||||||
|
ASSERT_EQUALS( std::string(""), err );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue