Bug 1262970 - Allow nsMainThreadPtrHandle to be constructed by and compared to nullptr. r?bholley
MozReview-Commit-ID: HQgRhJc9AwG
--- 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