mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
Bug 462728 crash when using alert from docloaderservice onStateChange listener [@ nsJARChannel::OnStartRequest]
r=biesi
This commit is contained in:
parent
2db3d81751
commit
53c762b512
@ -694,21 +694,30 @@ nsJARChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctx)
|
|||||||
nsresult rv = EnsureJarInput(PR_FALSE);
|
nsresult rv = EnsureJarInput(PR_FALSE);
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
|
// These variables must only be set if we're going to trigger an
|
||||||
|
// OnStartRequest, either from AsyncRead or OnDownloadComplete.
|
||||||
|
mListener = listener;
|
||||||
|
mListenerContext = ctx;
|
||||||
|
mIsPending = PR_TRUE;
|
||||||
if (mJarInput) {
|
if (mJarInput) {
|
||||||
// create input stream pump
|
// create input stream pump and call AsyncRead as a block
|
||||||
rv = NS_NewInputStreamPump(getter_AddRefs(mPump), mJarInput);
|
rv = NS_NewInputStreamPump(getter_AddRefs(mPump), mJarInput);
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_SUCCEEDED(rv))
|
||||||
|
rv = mPump->AsyncRead(this, nsnull);
|
||||||
|
|
||||||
rv = mPump->AsyncRead(this, nsnull);
|
// If we failed to create the pump or initiate the AsyncRead,
|
||||||
if (NS_FAILED(rv)) return rv;
|
// then we need to clear these variables.
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
mIsPending = PR_FALSE;
|
||||||
|
mListenerContext = nsnull;
|
||||||
|
mListener = nsnull;
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mLoadGroup)
|
if (mLoadGroup)
|
||||||
mLoadGroup->AddRequest(this, nsnull);
|
mLoadGroup->AddRequest(this, nsnull);
|
||||||
|
|
||||||
mListener = listener;
|
|
||||||
mListenerContext = ctx;
|
|
||||||
mIsPending = PR_TRUE;
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user