From bcdf7dc8459f6830fab10b7c7f480cfe309c2280 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Tue, 11 Jun 2024 19:01:24 +0200 Subject: [PATCH] [network] Avoid accessing raw pointers in nsTransportEventSinkProxy. --- netwerk/base/nsTransportUtils.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/netwerk/base/nsTransportUtils.cpp b/netwerk/base/nsTransportUtils.cpp index e29bbfdab5..1ff081ad27 100644 --- a/netwerk/base/nsTransportUtils.cpp +++ b/netwerk/base/nsTransportUtils.cpp @@ -27,24 +27,22 @@ public: : mSink(sink) , mTarget(target) , mLock("nsTransportEventSinkProxy.mLock") - , mLastEvent(nullptr) { - NS_ADDREF(mSink); } private: virtual ~nsTransportEventSinkProxy() { // our reference to mSink could be the last, so be sure to release - // it on the target thread. otherwise, we could get into trouble. - NS_ProxyRelease(mTarget, dont_AddRef(mSink)); + // it on the target thread, otherwise, we could get into trouble. + NS_ProxyRelease(mTarget, mSink.forget()); } public: - nsITransportEventSink *mSink; + nsCOMPtr mSink; nsCOMPtr mTarget; Mutex mLock; - nsTransportStatusEvent *mLastEvent; + RefPtr mLastEvent; }; class nsTransportStatusEvent : public Runnable @@ -70,12 +68,14 @@ public: // if not coalescing all, then last event may not equal self! { MutexAutoLock lock(mProxy->mLock); - if (mProxy->mLastEvent == this) - mProxy->mLastEvent = nullptr; + if (mProxy->mLastEvent == this) { + mProxy->mLastEvent = nullptr; + } } mProxy->mSink->OnTransportStatus(mTransport, mStatus, mProgress, mProgressMax); + mProxy = nullptr; return NS_OK; }