From 0be8940c19087e734a0a9f4024b02b5ce0aaa6e6 Mon Sep 17 00:00:00 2001 From: roytam1 Date: Wed, 12 Jun 2024 15:46:36 +0800 Subject: [PATCH] import from UXP: [network] Avoid accessing raw pointers in nsTransportEventSinkProxy. (bcdf7dc8) --- 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 e29bbfdab..1ff081ad2 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; }