import from UXP: [network] Hold strong ref in nsSyncStreamListener::Available. (68fd6722)

This commit is contained in:
2026-04-24 10:22:58 +08:00
parent 41934c874b
commit f3b7fcb560
+14 -8
View File
@@ -122,16 +122,22 @@ nsSyncStreamListener::Close()
NS_IMETHODIMP
nsSyncStreamListener::Available(uint64_t *result)
{
if (NS_FAILED(mStatus))
return mStatus;
// Nested event loop can run code that drops the last external reference.
RefPtr<nsSyncStreamListener> self(this);
mStatus = mPipeIn->Available(result);
if (NS_SUCCEEDED(mStatus) && (*result == 0) && !mDone) {
mStatus = WaitForData();
if (NS_SUCCEEDED(mStatus))
mStatus = mPipeIn->Available(result);
}
if (NS_FAILED(mStatus)) {
return mStatus;
}
mStatus = mPipeIn->Available(result);
if (NS_SUCCEEDED(mStatus) && (*result == 0) && !mDone) {
mStatus = WaitForData();
if (NS_SUCCEEDED(mStatus)) {
mStatus = mPipeIn->Available(result);
}
}
return mStatus;
}
NS_IMETHODIMP