bug 299151, fix crash in rdfxml serializer when QIed to bad interface on creation, r=bsmedberg, sr=shaver, a=bsmedberg

git-svn-id: svn://10.0.0.236/trunk@175478 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
axel%pike.org 2005-07-01 08:22:17 +00:00
parent 35fcd14778
commit 4e0a2433a9

View File

@ -80,16 +80,19 @@ nsRDFXMLSerializer::Create(nsISupports* aOuter, REFNSIID aIID, void** aResult)
if (aOuter)
return NS_ERROR_NO_AGGREGATION;
nsRDFXMLSerializer* result = new nsRDFXMLSerializer();
nsCOMPtr<nsIRDFXMLSerializer> result = new nsRDFXMLSerializer();
if (! result)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(result);
// The serializer object is here, addref gRefCnt so that the
// destructor can safely release it.
gRefCnt++;
nsresult rv;
rv = result->QueryInterface(aIID, aResult);
if (NS_SUCCEEDED(rv) && (gRefCnt++ == 0)) do {
if (NS_FAILED(rv)) return rv;
if (gRefCnt == 1) do {
nsCOMPtr<nsIRDFService> rdf = do_GetService("@mozilla.org/rdf/rdf-service;1", &rv);
if (NS_FAILED(rv)) break;
@ -121,8 +124,6 @@ nsRDFXMLSerializer::Create(nsISupports* aOuter, REFNSIID aIID, void** aResult)
if (NS_FAILED(rv)) break;
} while (0);
NS_RELEASE(result);
return rv;
}