Memory Leaks: Improved the checking of loops.
This commit is contained in:
parent
53752c129d
commit
cdf9ee4d8a
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* c++check - c/c++ syntax checking
|
||||
* Copyright (C) 2007 Daniel Marjamäki
|
||||
*
|
||||
|
@ -498,6 +498,20 @@ static void CheckMemoryLeak_CheckScope( const TOKEN *Tok1, const char varname[]
|
|||
done = false;
|
||||
}
|
||||
|
||||
// Replace "loop !var ;" with ";"
|
||||
if ( Match(tok2->next, "loop !var ;") )
|
||||
{
|
||||
erase(tok2, gettok(tok2,4));
|
||||
done = false;
|
||||
}
|
||||
|
||||
// Replace "loop !var alloc ;" with " alloc ;"
|
||||
if ( Match(tok2->next, "loop !var alloc ;") )
|
||||
{
|
||||
erase(tok2, gettok(tok2,3));
|
||||
done = false;
|
||||
}
|
||||
|
||||
// Delete if block in "alloc ; if(!var) return ;"
|
||||
if ( Match(tok2, "alloc ; if(!var) return ;") )
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* c++check - c/c++ syntax checking
|
||||
* Copyright (C) 2007 Daniel Marjamäki
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* c++check - c/c++ syntax checking
|
||||
* Copyright (C) 2007 Daniel Marjamäki
|
||||
*
|
||||
|
@ -75,6 +75,7 @@ private:
|
|||
TEST_CASE( forwhile3 );
|
||||
TEST_CASE( forwhile4 );
|
||||
TEST_CASE( forwhile5 );
|
||||
TEST_CASE( forwhile6 );
|
||||
|
||||
TEST_CASE( switch1 );
|
||||
TEST_CASE( switch2 );
|
||||
|
@ -390,6 +391,19 @@ private:
|
|||
}
|
||||
|
||||
|
||||
void forwhile6()
|
||||
{
|
||||
check( "void f(const char **a)\n"
|
||||
"{\n"
|
||||
" char *str = 0;\n"
|
||||
" for (int i = 0; i < 10 && !str; ++i)\n"
|
||||
" {\n"
|
||||
" str = strdup(a[i]);\n"
|
||||
" }\n"
|
||||
"}\n" );
|
||||
ASSERT_EQUALS( std::string("[test.cpp:8]: Memory leak: str\n"), errout.str() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue