From 8dcb8466275fb1bc12ef1cbbb0a7a6b7bdb712b8 Mon Sep 17 00:00:00 2001 From: Slava Semushin Date: Wed, 26 Aug 2009 02:44:19 +0700 Subject: [PATCH] Fixed #614 (If you see this, there is a bug ###### Token::Match() - varid was 0) http://sourceforge.net/apps/trac/cppcheck/ticket/614 --- src/checkmemoryleak.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/checkmemoryleak.cpp b/src/checkmemoryleak.cpp index b45c0157c..4c56c372a 100644 --- a/src/checkmemoryleak.cpp +++ b/src/checkmemoryleak.cpp @@ -627,7 +627,7 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::liststr() == ";") addtoken(";"); - if (Token::Match(tok->previous(), "[(;{}] %varid% =", varid)) + if (varid && Token::Match(tok->previous(), "[(;{}] %varid% =", varid)) { AllocType alloc = getAllocationType(tok->tokAt(2), varid); bool realloc = false; @@ -870,12 +870,12 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::listtokAt(2); @@ -909,16 +909,19 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::listprevious(), "[;{}=(,+-*/] %varid% [", varid)) - { - addtoken("use_"); + if (Token::Match(tok, "[)=] %varid% [+;)]", varid) || + Token::Match(tok, "%varid% +=|-=", varid) || + Token::Match(tok, "+=|<< %varid% ;", varid) || + Token::Match(tok, "= strcpy|strcat|memmove|memcpy ( %varid% ,", varid)) + { + addtoken("use"); + } + else if (Token::Match(tok->previous(), "[;{}=(,+-*/] %varid% [", varid)) + { + addtoken("use_"); + } } // Investigate function calls..