memory leaks: don't write errors for static member variables
This commit is contained in:
parent
c3d56c1d13
commit
36fb24b1a5
|
@ -2058,6 +2058,12 @@ void CheckMemoryLeakInClass::parseClass(const Token *tok1, std::vector<const cha
|
||||||
if (indentlevel > 0)
|
if (indentlevel > 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// skip static variables..
|
||||||
|
if (Token::Match(tok, "static %type% * %var% ;"))
|
||||||
|
{
|
||||||
|
tok = tok->tokAt(4);
|
||||||
|
}
|
||||||
|
|
||||||
// Declaring subclass.. recursive checking
|
// Declaring subclass.. recursive checking
|
||||||
if (Token::Match(tok, "class %var% [{:]"))
|
if (Token::Match(tok, "class %var% [{:]"))
|
||||||
{
|
{
|
||||||
|
|
|
@ -2410,6 +2410,8 @@ private:
|
||||||
TEST_CASE(class10);
|
TEST_CASE(class10);
|
||||||
TEST_CASE(class11);
|
TEST_CASE(class11);
|
||||||
|
|
||||||
|
TEST_CASE(staticvar);
|
||||||
|
|
||||||
TEST_CASE(use);
|
TEST_CASE(use);
|
||||||
|
|
||||||
TEST_CASE(free_member_in_sub_func);
|
TEST_CASE(free_member_in_sub_func);
|
||||||
|
@ -2628,6 +2630,23 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void staticvar()
|
||||||
|
{
|
||||||
|
check("class A\n"
|
||||||
|
"{\n"
|
||||||
|
"private:\n"
|
||||||
|
" static int * p;\n"
|
||||||
|
"public:"
|
||||||
|
" A()\n"
|
||||||
|
" {\n"
|
||||||
|
" if (!p)\n"
|
||||||
|
" p = new int[100];\n"
|
||||||
|
" }\n"
|
||||||
|
"};\n", true);
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void use()
|
void use()
|
||||||
{
|
{
|
||||||
check("class A\n"
|
check("class A\n"
|
||||||
|
|
Loading…
Reference in New Issue