diff --git a/lib/checkmemoryleak.cpp b/lib/checkmemoryleak.cpp index dd635e610..8635e3008 100644 --- a/lib/checkmemoryleak.cpp +++ b/lib/checkmemoryleak.cpp @@ -972,6 +972,17 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::listtokAt(5); + continue; + } + // var = strcpy|.. ( var , if (Token::Match(tok, "[;{}] %varid% = memcpy|memmove|memset|strcpy|strncpy|strcat|strncat ( %varid% ,", varid)) { diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index 21342e445..21c887eaa 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -517,6 +517,7 @@ private: ASSERT_EQUALS(";;alloc;if(var){dealloc;}", getcode("int f; f=open(); if(f>=0)close(f);", "f")); ASSERT_EQUALS(";;alloc;ifv{;}", getcode("int f; f=open(); if(f!=-1 || x);", "f")); ASSERT_EQUALS(";;;dealloc;loop{}}", getcode(";int f; while (close(f) == -1) { } }", "f")); + ASSERT_EQUALS(";;;dealloc;assign;;}", getcode(";int res; res = close(res); }", "res")); ASSERT_EQUALS(";;dealloc;", getcode("int f; e |= fclose(f);", "f"));