Index: nsComponentManager.cpp =================================================================== RCS file: /cvsroot/mozilla/xpcom/components/nsComponentManager.cpp,v retrieving revision 1.278 diff -u -r1.278 nsComponentManager.cpp --- nsComponentManager.cpp +++ nsComponentManager.cpp @@ -1722,6 +1722,10 @@ if (NS_SUCCEEDED(rv)) { rv = factory->CreateInstance(aDelegate, aIID, aResult); + if (NS_SUCCEEDED(rv) && !*aResult) { + NS_ERROR("Factory did not return an object but returned success!"); + rv = NS_ERROR_SERVICE_NOT_FOUND; + } NS_RELEASE(factory); } else @@ -1804,6 +1808,10 @@ { rv = factory->CreateInstance(aDelegate, aIID, aResult); + if (NS_SUCCEEDED(rv) && !*aResult) { + NS_ERROR("Factory did not return an object but returned success!"); + rv = NS_ERROR_SERVICE_NOT_FOUND; + } NS_RELEASE(factory); } else @@ -1950,6 +1958,10 @@ entry->mServiceObject = service; *result = service.get(); + if (!*result) { + NS_ERROR("Factory did not return an object but returned success!"); + return NS_ERROR_SERVICE_NOT_FOUND; + } NS_ADDREF(NS_STATIC_CAST(nsISupports*, (*result))); return rv; }