diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index 1167fe7b94b..436b4284905 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -193,18 +193,16 @@ NS_NewHTMLDocument(nsIDocument** aInstancePtrResult) nsHTMLDocument* doc = new nsHTMLDocument(); 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; } class IdAndNameMapEntry : public PLDHashEntryHdr diff --git a/mozilla/content/html/document/src/nsImageDocument.cpp b/mozilla/content/html/document/src/nsImageDocument.cpp index 7e542ac3134..fefb601cf5e 100644 --- a/mozilla/content/html/document/src/nsImageDocument.cpp +++ b/mozilla/content/html/document/src/nsImageDocument.cpp @@ -731,14 +731,14 @@ NS_NewImageDocument(nsIDocument** aResult) return NS_ERROR_OUT_OF_MEMORY; } + NS_ADDREF(doc); nsresult rv = doc->Init(); if (NS_FAILED(rv)) { - delete doc; - return rv; + NS_RELEASE(doc); } - NS_ADDREF(*aResult = doc); + *aResult = doc; - return NS_OK; + return rv; } diff --git a/mozilla/content/html/document/src/nsPluginDocument.cpp b/mozilla/content/html/document/src/nsPluginDocument.cpp index 8e5e4b941cc..97c769d843f 100644 --- a/mozilla/content/html/document/src/nsPluginDocument.cpp +++ b/mozilla/content/html/document/src/nsPluginDocument.cpp @@ -262,14 +262,14 @@ NS_NewPluginDocument(nsIDocument** aResult) return NS_ERROR_OUT_OF_MEMORY; } + NS_ADDREF(doc); nsresult rv = doc->Init(); if (NS_FAILED(rv)) { - delete doc; - return rv; + NS_RELEASE(doc); } - NS_ADDREF(*aResult = doc); + *aResult = doc; - return NS_OK; + return rv; } diff --git a/mozilla/content/xml/document/src/nsXMLDocument.cpp b/mozilla/content/xml/document/src/nsXMLDocument.cpp index e98c8ffa1b4..52f3500a1d6 100644 --- a/mozilla/content/xml/document/src/nsXMLDocument.cpp +++ b/mozilla/content/xml/document/src/nsXMLDocument.cpp @@ -116,20 +116,16 @@ NS_NewDOMDocument(nsIDOMDocument** aInstancePtrResult, *aInstancePtrResult = nsnull; - nsXMLDocument* doc = new nsXMLDocument(); + nsRefPtr doc = new nsXMLDocument(); if (!doc) return NS_ERROR_OUT_OF_MEMORY; rv = doc->Init(); if (NS_FAILED(rv)) { - delete doc; - return rv; } - nsCOMPtr 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