Make sure to addref documents before calling Init(). Bug 291887, r+sr=jst,
a=brendan git-svn-id: svn://10.0.0.236/trunk@172815 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -116,20 +116,16 @@ NS_NewDOMDocument(nsIDOMDocument** aInstancePtrResult,
|
||||
|
||||
*aInstancePtrResult = nsnull;
|
||||
|
||||
nsXMLDocument* doc = new nsXMLDocument();
|
||||
nsRefPtr<nsXMLDocument> doc = new nsXMLDocument();
|
||||
if (!doc)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
rv = doc->Init();
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
delete doc;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMDocument> kungFuDeathGrip(doc);
|
||||
|
||||
doc->nsIDocument::SetDocumentURI(aBaseURI);
|
||||
doc->SetBaseURI(aBaseURI);
|
||||
|
||||
@@ -164,18 +160,16 @@ NS_NewXMLDocument(nsIDocument** aInstancePtrResult)
|
||||
nsXMLDocument* doc = new nsXMLDocument();
|
||||
NS_ENSURE_TRUE(doc, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
NS_ADDREF(doc);
|
||||
nsresult rv = doc->Init();
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
delete doc;
|
||||
|
||||
return rv;
|
||||
NS_RELEASE(doc);
|
||||
}
|
||||
|
||||
*aInstancePtrResult = doc;
|
||||
NS_ADDREF(*aInstancePtrResult);
|
||||
|
||||
return NS_OK;
|
||||
return rv;
|
||||
}
|
||||
|
||||
// NOTE! nsDocument::operator new() zeroes out all members, so don't
|
||||
|
||||
Reference in New Issue
Block a user