Using freed memory : Fixed false positive when usage is something like: printf("free %x",p);
This commit is contained in:
parent
b756158644
commit
2b3a987552
|
@ -245,7 +245,7 @@ const char * CheckMemoryLeakClass::call_func( const TOKEN *tok, std::list<const
|
||||||
const TOKEN *ftok = _tokenizer->GetFunctionTokenByName(funcname);
|
const TOKEN *ftok = _tokenizer->GetFunctionTokenByName(funcname);
|
||||||
const char *parname = Tokenizer::getParameterName( ftok, par );
|
const char *parname = Tokenizer::getParameterName( ftok, par );
|
||||||
if ( ! parname )
|
if ( ! parname )
|
||||||
return "use";
|
return "recursive";
|
||||||
// Check if the function deallocates the variable..
|
// Check if the function deallocates the variable..
|
||||||
while ( ftok && (ftok->str() != "{") )
|
while ( ftok && (ftok->str() != "{") )
|
||||||
ftok = ftok->next();
|
ftok = ftok->next();
|
||||||
|
|
|
@ -159,6 +159,7 @@ private:
|
||||||
TEST_CASE( dealloc_use_3 ); // Deallocate and then use memory. No error
|
TEST_CASE( dealloc_use_3 ); // Deallocate and then use memory. No error
|
||||||
TEST_CASE( dealloc_use_4 );
|
TEST_CASE( dealloc_use_4 );
|
||||||
TEST_CASE( dealloc_use_5 );
|
TEST_CASE( dealloc_use_5 );
|
||||||
|
TEST_CASE( dealloc_use_6 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1470,6 +1471,17 @@ private:
|
||||||
ASSERT_EQUALS( std::string("[test.cpp:5]: Using \"str\" after it has been deallocated / released\n"), errout.str() );
|
ASSERT_EQUALS( std::string("[test.cpp:5]: Using \"str\" after it has been deallocated / released\n"), errout.str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dealloc_use_6()
|
||||||
|
{
|
||||||
|
check( "void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" char *str = 0;\n"
|
||||||
|
" free(str);\n"
|
||||||
|
" printf(\"free %x\", str);\n"
|
||||||
|
"}\n" );
|
||||||
|
ASSERT_EQUALS( std::string(""), errout.str() );
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST( TestMemleak )
|
REGISTER_TEST( TestMemleak )
|
||||||
|
|
Loading…
Reference in New Issue