diff --git a/fml/memory/ref_ptr.h b/fml/memory/ref_ptr.h index 149c058987a8e..2b829fc4f9f78 100644 --- a/fml/memory/ref_ptr.h +++ b/fml/memory/ref_ptr.h @@ -108,6 +108,7 @@ class RefPtr final { // Destructor. ~RefPtr() { if (ptr_) { + // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDelete) ptr_->Release(); } } diff --git a/fml/memory/weak_ptr.h b/fml/memory/weak_ptr.h index 8507b8aefed9f..bd09610cf309c 100644 --- a/fml/memory/weak_ptr.h +++ b/fml/memory/weak_ptr.h @@ -117,7 +117,7 @@ class WeakPtr { explicit WeakPtr(T* ptr, fml::RefPtr&& flag, - DebugThreadChecker checker) + const DebugThreadChecker& checker) : ptr_(ptr), flag_(std::move(flag)), checker_(checker) {} T* ptr_; fml::RefPtr flag_; @@ -203,7 +203,7 @@ class TaskRunnerAffineWeakPtr { explicit TaskRunnerAffineWeakPtr( T* ptr, fml::RefPtr&& flag, - DebugTaskRunnerChecker checker) + const DebugTaskRunnerChecker& checker) : ptr_(ptr), flag_(std::move(flag)), checker_(checker) {} T* ptr_; diff --git a/fml/platform/darwin/weak_nsobject.h b/fml/platform/darwin/weak_nsobject.h index c636c6dc895ba..cf657d0b5d9e8 100644 --- a/fml/platform/darwin/weak_nsobject.h +++ b/fml/platform/darwin/weak_nsobject.h @@ -9,6 +9,8 @@ #import #include + +#include #include "flutter/fml/compiler_specific.h" #include "flutter/fml/logging.h" #include "flutter/fml/memory/ref_counted.h" @@ -73,7 +75,7 @@ class WeakNSObjectFactory; // receives nullify() from the object's sentinel. class WeakContainer : public fml::RefCountedThreadSafe { public: - explicit WeakContainer(id object, debug::DebugThreadChecker checker); + explicit WeakContainer(id object, const debug::DebugThreadChecker& checker); id object() { CheckThreadSafety(); @@ -154,6 +156,8 @@ class WeakNSProtocol { return get() != that; } + // This appears to be intentional to allow truthiness? + // NOLINTNEXTLINE(google-explicit-constructor) operator NST() const { CheckThreadSafety(); return get(); @@ -162,8 +166,9 @@ class WeakNSProtocol { protected: friend class WeakNSObjectFactory; - explicit WeakNSProtocol(RefPtr container, debug::DebugThreadChecker checker) - : container_(container), checker_(checker) {} + explicit WeakNSProtocol(RefPtr container, + const debug::DebugThreadChecker& checker) + : container_(std::move(container)), checker_(checker) {} // Refecounted reference to the container tracking the ObjectiveC object this // class encapsulates. @@ -217,7 +222,8 @@ class WeakNSObject : public WeakNSProtocol { private: friend class WeakNSObjectFactory; - explicit WeakNSObject(RefPtr container, debug::DebugThreadChecker checker) + explicit WeakNSObject(const RefPtr& container, + const debug::DebugThreadChecker& checker) : WeakNSProtocol(container, checker) {} }; diff --git a/fml/platform/darwin/weak_nsobject.mm b/fml/platform/darwin/weak_nsobject.mm index 4ac709755a58f..e255515cafa21 100644 --- a/fml/platform/darwin/weak_nsobject.mm +++ b/fml/platform/darwin/weak_nsobject.mm @@ -13,7 +13,7 @@ namespace fml { -WeakContainer::WeakContainer(id object, debug::DebugThreadChecker checker) +WeakContainer::WeakContainer(id object, const debug::DebugThreadChecker& checker) : object_(object), checker_(checker) {} WeakContainer::~WeakContainer() {}