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

This commit is contained in:
axel%pike.org 2005-07-01 08:22:17 +00:00
Родитель d99a80f804
Коммит c566fcd541
1 изменённых файлов: 7 добавлений и 6 удалений

Просмотреть файл

@ -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;
}