1
0
mirror of https://github.com/roytam1/UXP.git synced 2026-05-26 13:58:49 +00:00

[network] Avoid accessing raw pointers in nsTransportEventSinkProxy.

This commit is contained in:
Moonchild
2024-06-11 19:01:24 +02:00
committed by roytam1
parent bfb171c783
commit bcdf7dc845
+8 -8
View File
@@ -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<nsITransportEventSink> mSink;
nsCOMPtr<nsIEventTarget> mTarget;
Mutex mLock;
nsTransportStatusEvent *mLastEvent;
RefPtr<nsTransportStatusEvent> 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;
}