From 0d07f4b46cb3b39263010f35456fcbc3fb91e7cf Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Thu, 25 Feb 1999 04:20:06 +0000 Subject: [PATCH] cleaned up factory logic for service manager. git-svn-id: svn://10.0.0.236/trunk@21856 18797224-902f-48f8-a5cc-f745e15eee43 --- .../modules/oji/src/nsCJVMManagerFactory.cpp | 56 ++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/mozilla/modules/oji/src/nsCJVMManagerFactory.cpp b/mozilla/modules/oji/src/nsCJVMManagerFactory.cpp index b4122362d6c..21cc6679ad3 100644 --- a/mozilla/modules/oji/src/nsCJVMManagerFactory.cpp +++ b/mozilla/modules/oji/src/nsCJVMManagerFactory.cpp @@ -35,8 +35,6 @@ nsIFactory *nsCJVMManagerFactory::m_pNSIFactory = NULL; nsIServiceManager *g_pNSIServiceManager = NULL; - - /*+++++++++++++++++++++++++++++++++++++++++++++++++ * NSGetFactory: * Provides entry point to liveconnect dll. @@ -49,11 +47,11 @@ NSGetFactory(const nsCID &aClass, nsISupports* servMgr, nsIFactory **aFactory) if (!aClass.Equals(kCJVMManagerCID)) { return NS_ERROR_FACTORY_NOT_LOADED; // XXX right error? } - nsCJVMManagerFactory* pCJVMManagerFactory = new nsCJVMManagerFactory(); - if (pCJVMManagerFactory == NULL) + nsCJVMManagerFactory* factory = new nsCJVMManagerFactory(); + if (factory == NULL) return NS_ERROR_OUT_OF_MEMORY; - pCJVMManagerFactory->AddRef(); - *aFactory = pCJVMManagerFactory; + factory->AddRef(); + *aFactory = factory; res = servMgr->QueryInterface(kIServiceManagerIID, (void**)&g_pNSIServiceManager); if ((NS_OK == res) && (nsnull != g_pNSIServiceManager)) { @@ -69,12 +67,10 @@ NSCanUnload(void) } - - - //////////////////////////////////////////////////////////////////////////// // from nsISupports +#if 1 NS_METHOD nsCJVMManagerFactory::QueryInterface(const nsIID& aIID, void** aInstancePtr) { @@ -93,7 +89,9 @@ nsCJVMManagerFactory::QueryInterface(const nsIID& aIID, void** aInstancePtr) NS_IMPL_ADDREF(nsCJVMManagerFactory) NS_IMPL_RELEASE(nsCJVMManagerFactory) - +#else +NS_IMPL_ISUPPORTS(nsCJVMManagerFactory, kIFactoryIID) +#endif //////////////////////////////////////////////////////////////////////////// // from nsIFactory: @@ -101,19 +99,19 @@ NS_IMPL_RELEASE(nsCJVMManagerFactory) NS_METHOD nsCJVMManagerFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult) { - nsJVMManager *pNSJVMManager = NULL; - *aResult = NULL; - - if (aOuter && !aIID.Equals(kISupportsIID)) - return NS_NOINTERFACE; // XXX right error? - pNSJVMManager = new nsJVMManager(aOuter); - if (pNSJVMManager->QueryInterface(aIID, - (void**)aResult) != NS_OK) { - // then we're trying get a interface other than nsISupports and - // nsICapsManager - return NS_ERROR_FAILURE; - } - return NS_OK; + *aResult = NULL; + + if (aOuter && !aIID.Equals(kISupportsIID)) + return NS_NOINTERFACE; // XXX right error? + + nsresult res = NS_ERROR_OUT_OF_MEMORY; + nsJVMManager *manager = new nsJVMManager(aOuter); + if (manager != NULL) { + res = manager->QueryInterface(aIID, (void**)aResult); + if (res != NS_OK) + delete manager; + } + return res; } NS_METHOD @@ -129,12 +127,15 @@ nsCJVMManagerFactory::LockFactory(PRBool aLock) nsCJVMManagerFactory::nsCJVMManagerFactory(void) { + NS_INIT_REFCNT(); + +// this code is totally bogus in the new service manager world. +#if 0 if( m_pNSIFactory != NULL) { return; } - NS_INIT_REFCNT(); nsresult err = NS_OK; NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); @@ -145,16 +146,19 @@ nsCJVMManagerFactory::nsCJVMManagerFactory(void) nsRepository::RegisterFactory(kCJVMManagerCID, m_pNSIFactory, PR_FALSE); } +#endif } nsCJVMManagerFactory::~nsCJVMManagerFactory() { +// this code is totally wrong. we're in a destructor, and whatever our reference count is our object is going +// away. +#if 0 if(mRefCnt == 0) { NS_DEFINE_CID(kCJVMManagerCID, NS_CCAPSMANAGER_CID); nsRepository::UnregisterFactory(kCJVMManagerCID, (nsIFactory *)m_pNSIFactory); } +#endif } - -