Bug 1262970 - Allow nsMainThreadPtrHandle to be constructed by and compared to nullptr. r?bholley draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 14 Apr 2016 11:38:04 +0200
changeset 350821 31a5a2721fd57c9e0c563489001c1c6524858e03
parent 350335 564b225d553547fe4aa9a1039278f695c9507db9
child 350822 2c9081d0e2f16876da20f0d27b000fa2d1733150
push id15422
push userpehrsons@gmail.com
push dateThu, 14 Apr 2016 09:41:25 +0000
reviewersbholley
bugs1262970
milestone48.0a1
Bug 1262970 - Allow nsMainThreadPtrHandle to be constructed by and compared to nullptr. r?bholley MozReview-Commit-ID: HQgRhJc9AwG
xpcom/glue/nsProxyRelease.h
--- a/xpcom/glue/nsProxyRelease.h
+++ b/xpcom/glue/nsProxyRelease.h
@@ -219,16 +219,17 @@ private:
 
 template<class T>
 class nsMainThreadPtrHandle
 {
   RefPtr<nsMainThreadPtrHolder<T>> mPtr;
 
 public:
   nsMainThreadPtrHandle() : mPtr(nullptr) {}
+  MOZ_IMPLICIT nsMainThreadPtrHandle(decltype(nullptr)) : mPtr(nullptr) {}
   explicit nsMainThreadPtrHandle(nsMainThreadPtrHolder<T>* aHolder)
     : mPtr(aHolder)
   {
   }
   nsMainThreadPtrHandle(const nsMainThreadPtrHandle& aOther)
     : mPtr(aOther.mPtr)
   {
   }
@@ -271,14 +272,16 @@ public:
       return mPtr == aOther.mPtr;
     }
     return *mPtr == *aOther.mPtr;
   }
   bool operator!=(const nsMainThreadPtrHandle<T>& aOther) const
   {
     return !operator==(aOther);
   }
+  bool operator==(decltype(nullptr)) const { return mPtr == nullptr; }
+  bool operator!=(decltype(nullptr)) const { return mPtr != nullptr; }
   bool operator!() const {
     return !mPtr || !*mPtr;
   }
 };
 
 #endif