diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLocalVarsChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLocalVarsChecker.cpp index e0433c5c2c1a0..bb580b06e2c53 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLocalVarsChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLocalVarsChecker.cpp @@ -263,7 +263,7 @@ class RawPtrRefLocalVarsChecker if (tryToFindPtrOrigin( Value, /*StopAtFirstRefCountedObj=*/false, [&](const clang::Expr *InitArgOrigin, bool IsSafe) { - if (!InitArgOrigin) + if (!InitArgOrigin || IsSafe) return true; if (isa(InitArgOrigin)) diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-local-vars.cpp b/clang/test/Analysis/Checkers/WebKit/uncounted-local-vars.cpp index d7fb689557a6f..52854cd10f68c 100644 --- a/clang/test/Analysis/Checkers/WebKit/uncounted-local-vars.cpp +++ b/clang/test/Analysis/Checkers/WebKit/uncounted-local-vars.cpp @@ -456,3 +456,12 @@ int TreeNode::recursiveWeight() { } } // namespace local_var_in_recursive_function + +namespace local_var_for_singleton { + RefCountable *singleton(); + RefCountable *otherSingleton(); + void foo() { + RefCountable* bar = singleton(); + RefCountable* baz = otherSingleton(); + } +} \ No newline at end of file