From c296c8d73d322ef2fd2abbdefb3f00432d07bb13 Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Fri, 10 May 2024 21:57:57 +0200 Subject: [PATCH] Extend --- lib/checkleakautovar.cpp | 2 +- test/testleakautovar.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/checkleakautovar.cpp b/lib/checkleakautovar.cpp index f560ae43a0a..2f3a26a58f5 100644 --- a/lib/checkleakautovar.cpp +++ b/lib/checkleakautovar.cpp @@ -401,7 +401,7 @@ bool CheckLeakAutoVar::checkScope(const Token * const startToken, if (Token::simpleMatch(tokAssignOp->astOperand1(), ".")) continue; // taking address of another variable.. - if (Token::Match(tokAssignOp, "= %var% [+;?]")) { + if (Token::Match(tokAssignOp, "= %var% +|;|?|%comp%")) { if (varTok->tokAt(2)->varId() != varTok->varId()) { // If variable points at allocated memory => error leakIfAllocated(varTok, varInfo); diff --git a/test/testleakautovar.cpp b/test/testleakautovar.cpp index da0502de408..1da92689f3e 100644 --- a/test/testleakautovar.cpp +++ b/test/testleakautovar.cpp @@ -627,6 +627,12 @@ class TestLeakAutoVar : public TestFixture { " x = p ? p : nullptr;\n" "}", true); ASSERT_EQUALS("", errout_str()); + + check("void f(int*& x) {\n" + " int* p = (int*)malloc(10);\n" + " x = p != nullptr ? p : nullptr;\n" + "}", true); + ASSERT_EQUALS("", errout_str()); } void isAutoDealloc() {