Fix bug 341592 (Crash on first start of Sunbird - "Failed to get the

script language").  r/sr=bz
This commit is contained in:
mhammond%skippinet.com.au 2006-06-15 06:29:52 +00:00
parent fc94bde3fd
commit 18afaedffe
2 changed files with 16 additions and 8 deletions

View File

@ -94,6 +94,17 @@ nsDOMScriptObjectFactory::nsDOMScriptObjectFactory() :
NS_CreateJSRuntime(getter_AddRefs(mLanguageArray[NS_STID_INDEX(nsIProgrammingLanguage::JAVASCRIPT)]));
}
nsDOMScriptObjectFactory::~nsDOMScriptObjectFactory()
{
PRUint32 i;
NS_STID_FOR_INDEX(i) {
if (mLanguageArray[i] != nsnull) {
mLanguageArray[i]->ShutDown();
mLanguageArray[i] = nsnull;
}
}
}
NS_INTERFACE_MAP_BEGIN(nsDOMScriptObjectFactory)
NS_INTERFACE_MAP_ENTRY(nsIDOMScriptObjectFactory)
NS_INTERFACE_MAP_ENTRY(nsIObserver)
@ -285,14 +296,6 @@ nsDOMScriptObjectFactory::Observe(nsISupports *aSubject,
nsGlobalWindow::ShutDown();
nsDOMClassInfo::ShutDown();
PRUint32 i;
NS_STID_FOR_INDEX(i) {
if (mLanguageArray[i] != nsnull) {
mLanguageArray[i]->ShutDown();
mLanguageArray[i] = nsnull;
}
}
nsCOMPtr<nsIExceptionService> xs =
do_GetService(NS_EXCEPTIONSERVICE_CONTRACTID);
@ -305,6 +308,10 @@ nsDOMScriptObjectFactory::Observe(nsISupports *aSubject,
xs->UnregisterExceptionProvider(this, NS_ERROR_MODULE_DOM_XPATH);
xs->UnregisterExceptionProvider(this, NS_ERROR_MODULE_XPCONNECT);
}
// Note that we do *not* cleanup the script language references held
// in the nsDOMScriptObjectFactory service - they may be required
// after this is called, as other things shut down and release their
// script object references.
}
return NS_OK;

View File

@ -62,6 +62,7 @@ class nsDOMScriptObjectFactory : public nsIDOMScriptObjectFactory,
{
public:
nsDOMScriptObjectFactory();
virtual ~nsDOMScriptObjectFactory();
NS_DECL_ISUPPORTS