Fixed the testcase TestMemleak::realloc3

This commit is contained in:
Daniel Marjamäki 2009-03-23 18:34:59 +01:00
parent 7905cbc5e7
commit 06776c6ac7
2 changed files with 23 additions and 22 deletions

View File

@ -330,10 +330,11 @@ bool CheckMemoryLeakClass::notvar(const Token *tok, const char *varnames[], bool
const std::string end(endpar ? " )" : " [;)&|]"); const std::string end(endpar ? " )" : " [;)&|]");
return bool(Token::Match(tok, std::string("! " + varname + end).c_str()) || return bool(Token::Match(tok, ("! " + varname + end).c_str()) ||
Token::simpleMatch(tok, std::string("! ( " + varname + " )" + end).c_str()) || Token::Match(tok, ("! ( " + varname + " )" + end).c_str()) ||
Token::Match(tok, std::string("0 == " + varname + end).c_str()) || Token::Match(tok, ("0 == " + varname + end).c_str()) ||
Token::simpleMatch(tok, std::string(varname + " == 0" + end).c_str())); Token::Match(tok, (varname + " == 0" + end).c_str()) ||
Token::Match(tok, ("( " + varname + " ) == 0" + end).c_str()));
} }
Token *CheckMemoryLeakClass::getcode(const Token *tok, std::list<const Token *> callstack, const char varname[], AllocType &alloctype, AllocType &dealloctype, bool classmember, bool &all, unsigned int sz) Token *CheckMemoryLeakClass::getcode(const Token *tok, std::list<const Token *> callstack, const char varname[], AllocType &alloctype, AllocType &dealloctype, bool classmember, bool &all, unsigned int sz)

View File

@ -164,7 +164,7 @@ private:
TEST_CASE(realloc1); TEST_CASE(realloc1);
TEST_CASE(realloc2); TEST_CASE(realloc2);
// TODO TEST_CASE(realloc3); TEST_CASE(realloc3);
TEST_CASE(assign); TEST_CASE(assign);
@ -657,14 +657,14 @@ private:
{ {
check("static void f()\n" check("static void f()\n"
"{\n" "{\n"
" char *buf = NULL, *tmp;\n" " char *buf = NULL, *tmp;\n"
" if (!(tmp = realloc(buf, 50)))\n" " if (!(tmp = realloc(buf, 50)))\n"
" {\n" " {\n"
" free(buf);\n" " free(buf);\n"
" return NULL;\n" " return NULL;\n"
" }\n" " }\n"
" buf = tmp;\n" " buf = tmp;\n"
" return buf;\n" " return buf;\n"
"}\n"); "}\n");
ASSERT_EQUALS(std::string(""), errout.str()); ASSERT_EQUALS(std::string(""), errout.str());
} }
@ -673,11 +673,11 @@ private:
{ {
check("static void f()\n" check("static void f()\n"
"{\n" "{\n"
" char *buf = malloc(10);\n" " char *buf = malloc(10);\n"
" if (aa)\n" " if (aa)\n"
" ;\n" " ;\n"
" else if (buf = realloc(buf, 100))\n" " else if (buf = realloc(buf, 100))\n"
" ;\n" " ;\n"
" free(buf);\n" " free(buf);\n"
"}\n"); "}\n");
ASSERT_EQUALS(std::string(""), errout.str()); ASSERT_EQUALS(std::string(""), errout.str());
@ -1487,8 +1487,8 @@ private:
check("class A\n" check("class A\n"
"{\n" "{\n"
"public:\n" "public:\n"
" void a();\n" " void a();\n"
" void doNothing() { }\n" " void doNothing() { }\n"
"};\n" "};\n"
"\n" "\n"
"void A::a()\n" "void A::a()\n"
@ -1505,9 +1505,9 @@ private:
check("class A\n" check("class A\n"
"{\n" "{\n"
"public:\n" "public:\n"
" int * p;\n" " int * p;\n"
" A();\n" " A();\n"
" ~A();\n" " ~A();\n"
"};\n" "};\n"
"\n" "\n"
"A::A()\n" "A::A()\n"