From: ziqingluo-90 Date: Fri, 6 Jan 2023 22:29:19 +0000 (-0800) Subject: [Fix][-Wunsafe-buffer-usage] Add a new `forEachDescendant` matcher that skips callabl... X-Git-Tag: upstream/17.0.6~21841 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5be422b49288d7b9394312ad5ccba1fef42116e6;p=platform%2Fupstream%2Fllvm.git [Fix][-Wunsafe-buffer-usage] Add a new `forEachDescendant` matcher that skips callable declarations The original patch does include a `new` statement without a matching `delete`, causing Sanitizer warnings in https://lab.llvm.org/buildbot/#/builders/5/builds/30522/steps/13/logs/stdio. This commit is a fix to it. Differential Revision: https://reviews.llvm.org/D138329 --- diff --git a/clang/lib/Analysis/UnsafeBufferUsage.cpp b/clang/lib/Analysis/UnsafeBufferUsage.cpp index d941cf5..7dd9e91 100644 --- a/clang/lib/Analysis/UnsafeBufferUsage.cpp +++ b/clang/lib/Analysis/UnsafeBufferUsage.cpp @@ -108,8 +108,9 @@ private: }; AST_MATCHER_P(Stmt, forEveryDescendant, internal::Matcher, innerMatcher) { - MatchDescendantVisitor Visitor(new DynTypedMatcher(innerMatcher), Finder, - Builder, ASTMatchFinder::BK_All); + const DynTypedMatcher &DTM = static_cast(innerMatcher); + + MatchDescendantVisitor Visitor(&DTM, Finder, Builder, ASTMatchFinder::BK_All); return Visitor.findMatch(DynTypedNode::create(Node)); } } // namespace clang::ast_matchers