From 85980b3c4a07bc894a57002d9ea01557428d82c0 Mon Sep 17 00:00:00 2001 From: "timeless%mac.com" Date: Wed, 16 Jan 2002 00:16:51 +0000 Subject: [PATCH] Bug 119310 preferences + open in new tab + clicking browser crashes @nsLoadGroup::RemoveRequest assert instead of crashing if some load fails r=darin sr=waterson git-svn-id: svn://10.0.0.236/trunk@112243 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xul/document/src/nsXULDocument.cpp | 20 ++++++++++--------- mozilla/htmlparser/src/nsParser.cpp | 4 ++-- mozilla/netwerk/base/src/nsLoadGroup.cpp | 1 + mozilla/parser/htmlparser/src/nsParser.cpp | 4 ++-- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/mozilla/content/xul/document/src/nsXULDocument.cpp b/mozilla/content/xul/document/src/nsXULDocument.cpp index 39b693a27de..fc9f226a900 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.cpp +++ b/mozilla/content/xul/document/src/nsXULDocument.cpp @@ -5950,16 +5950,18 @@ nsXULDocument::ResumeWalk() nsIDocumentObserver* observer = (nsIDocumentObserver*) mObservers[i]; observer->EndLoad(this); } + NS_ASSERTION(mPlaceHolderRequest, "Bug 119310, perhaps overlayinfo referenced a overlay that doesn't exist"); + if (mPlaceHolderRequest) { + // Remove the placeholder channel; if we're the last channel in the + // load group, this will fire the OnEndDocumentLoad() method in the + // docshell, and run the onload handlers, etc. + nsCOMPtr group = do_QueryReferent(mDocumentLoadGroup); + if (group) { + rv = group->RemoveRequest(mPlaceHolderRequest, nsnull, NS_OK); + if (NS_FAILED(rv)) return rv; - // Remove the placeholder channel; if we're the last channel in the - // load group, this will fire the OnEndDocumentLoad() method in the - // docshell, and run the onload handlers, etc. - nsCOMPtr group = do_QueryReferent(mDocumentLoadGroup); - if (group) { - rv = group->RemoveRequest(mPlaceHolderRequest, nsnull, NS_OK); - if (NS_FAILED(rv)) return rv; - - mPlaceHolderRequest = nsnull; + mPlaceHolderRequest = nsnull; + } } return rv; } diff --git a/mozilla/htmlparser/src/nsParser.cpp b/mozilla/htmlparser/src/nsParser.cpp index eb2e1df4ab9..4fb006b922a 100644 --- a/mozilla/htmlparser/src/nsParser.cpp +++ b/mozilla/htmlparser/src/nsParser.cpp @@ -1380,9 +1380,9 @@ nsresult nsParser::DidBuildModel(nsresult anErrorCode) { nsresult result=anErrorCode; if (IsComplete()) { - if(mParserContext && !mParserContext->mPrevContext) { + if (mParserContext && !mParserContext->mPrevContext) { if (mParserContext->mDTD) { - result = mParserContext->mDTD->DidBuildModel(anErrorCode,PRBool(0==mParserContext->mPrevContext),this,mSink); + result = mParserContext->mDTD->DidBuildModel(anErrorCode,PR_TRUE,this,mSink); } //Ref. to bug 61462. mParserContext->mRequest = 0; diff --git a/mozilla/netwerk/base/src/nsLoadGroup.cpp b/mozilla/netwerk/base/src/nsLoadGroup.cpp index 0ae8e5d688a..2a008dd91ba 100644 --- a/mozilla/netwerk/base/src/nsLoadGroup.cpp +++ b/mozilla/netwerk/base/src/nsLoadGroup.cpp @@ -482,6 +482,7 @@ nsLoadGroup::AddRequest(nsIRequest *request, nsISupports* ctxt) NS_IMETHODIMP nsLoadGroup::RemoveRequest(nsIRequest *request, nsISupports* ctxt, nsresult aStatus) { + NS_ENSURE_ARG_POINTER(request); nsresult rv; #if defined(PR_LOGGING) diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp index eb2e1df4ab9..4fb006b922a 100644 --- a/mozilla/parser/htmlparser/src/nsParser.cpp +++ b/mozilla/parser/htmlparser/src/nsParser.cpp @@ -1380,9 +1380,9 @@ nsresult nsParser::DidBuildModel(nsresult anErrorCode) { nsresult result=anErrorCode; if (IsComplete()) { - if(mParserContext && !mParserContext->mPrevContext) { + if (mParserContext && !mParserContext->mPrevContext) { if (mParserContext->mDTD) { - result = mParserContext->mDTD->DidBuildModel(anErrorCode,PRBool(0==mParserContext->mPrevContext),this,mSink); + result = mParserContext->mDTD->DidBuildModel(anErrorCode,PR_TRUE,this,mSink); } //Ref. to bug 61462. mParserContext->mRequest = 0;