diff --git a/lib/checkmemoryleak.cpp b/lib/checkmemoryleak.cpp index a53a06d5b..8c96509dc 100644 --- a/lib/checkmemoryleak.cpp +++ b/lib/checkmemoryleak.cpp @@ -1964,8 +1964,8 @@ void CheckMemoryLeakInFunction::simplifycode(Token *tok) } else { - // remove the "if* ;" - Token::eraseTokens(tok2, tok2->tokAt(3)); + // remove the "if*" + Token::eraseTokens(tok2, tok2->tokAt(2)); } done = false; } diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index c23d64395..17cd57147 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -727,6 +727,10 @@ private: // use ; dealloc ; ASSERT_EQUALS("; alloc ; use ; if return ; dealloc ;", simplifycode("; alloc ; use ; if { return ; } dealloc ;")); + + // #2635 - false negative + ASSERT_EQUALS("; alloc ; return use ; }", + simplifycode("; alloc ; if(!var) { loop { ifv { } } alloc ; } return use; }")); }