Fixed #3899 (false positive: (error) Returning/using deallocated pointer fp)
This commit is contained in:
parent
180bb00ac6
commit
3d0e090a13
|
@ -147,7 +147,9 @@ void CheckLeakAutoVar::check()
|
||||||
std::map<unsigned int, std::string>::iterator it = varInfo.alloctype.begin();
|
std::map<unsigned int, std::string>::iterator it = varInfo.alloctype.begin();
|
||||||
while (it != varInfo.alloctype.end()) {
|
while (it != varInfo.alloctype.end()) {
|
||||||
const Variable *var = symbolDatabase->getVariableFromVarId(it->first);
|
const Variable *var = symbolDatabase->getVariableFromVarId(it->first);
|
||||||
if (var && var->isArgument() && var->isReference())
|
if (!var ||
|
||||||
|
(var->isArgument() && var->isReference()) ||
|
||||||
|
(!var->isArgument() && !var->isLocal()))
|
||||||
varInfo.alloctype.erase(it++);
|
varInfo.alloctype.erase(it++);
|
||||||
else
|
else
|
||||||
++it;
|
++it;
|
||||||
|
|
|
@ -81,6 +81,7 @@ private:
|
||||||
|
|
||||||
// General tests: variable type, allocation type, etc
|
// General tests: variable type, allocation type, etc
|
||||||
TEST_CASE(test1);
|
TEST_CASE(test1);
|
||||||
|
TEST_CASE(test2);
|
||||||
|
|
||||||
// Possible leak => Further configuration is needed for complete analysis
|
// Possible leak => Further configuration is needed for complete analysis
|
||||||
TEST_CASE(configuration1);
|
TEST_CASE(configuration1);
|
||||||
|
@ -438,6 +439,14 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test2() { // 3899
|
||||||
|
check("struct Fred {\n"
|
||||||
|
" char *p;\n"
|
||||||
|
" void f1() { free(p); }\n"
|
||||||
|
"};");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
void configuration1() {
|
void configuration1() {
|
||||||
// Possible leak => configuration is required for complete analysis
|
// Possible leak => configuration is required for complete analysis
|
||||||
// The user should be able to "white list" and "black list" functions.
|
// The user should be able to "white list" and "black list" functions.
|
||||||
|
|
Loading…
Reference in New Issue