clean up references to the global runtime before
services are shutdown, but acting as an observer on XPCOM shutdown
This commit is contained in:
alecf%netscape.com 2001-01-19 20:44:19 +00:00
Родитель 8fb23ce1a8
Коммит 11ba78572a
1 изменённых файлов: 9 добавлений и 3 удалений

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

@ -237,6 +237,7 @@ nsPref::nsPref()
++mRefCnt;
rv = observerService->AddObserver(this, PROFILE_BEFORE_CHANGE_TOPIC);
rv = observerService->AddObserver(this, PROFILE_DO_CHANGE_TOPIC);
rv = observerService->AddObserver(this, NS_ConvertASCIItoUCS2(NS_XPCOM_SHUTDOWN_OBSERVER_ID).get());
--mRefCnt;
}
}
@ -630,7 +631,7 @@ NotifyObserver(const char *newpref, void *data)
{
nsCOMPtr<nsIObserver> observer = NS_STATIC_CAST(nsIObserver *, data);
observer->Observe(observer, NS_LITERAL_STRING("nsPref:changed"),
NS_ConvertASCIItoUCS2(newpref));
NS_ConvertASCIItoUCS2(newpref).get());
return 0;
}
@ -836,7 +837,7 @@ NS_IMETHODIMP nsPref::SetCharPref(const char *pref,const char* value)
NS_IMETHODIMP nsPref::SetUnicharPref(const char *pref, const PRUnichar *value)
{
if (NS_FAILED(SecurePrefCheck(pref))) return NS_ERROR_FAILURE;
return SetCharPref(pref, NS_ConvertUCS2toUTF8(value));
return SetCharPref(pref, NS_ConvertUCS2toUTF8(value).get());
}
NS_IMETHODIMP nsPref::SetIntPref(const char *pref,PRInt32 value)
@ -899,7 +900,7 @@ NS_IMETHODIMP nsPref::SetDefaultUnicharPref(const char *pref,
const PRUnichar *value)
{
if (NS_FAILED(SecurePrefCheck(pref))) return NS_ERROR_FAILURE;
return SetDefaultCharPref(pref, NS_ConvertUCS2toUTF8(value));
return SetDefaultCharPref(pref, NS_ConvertUCS2toUTF8(value).get());
}
NS_IMETHODIMP nsPref::SetDefaultIntPref(const char *pref,PRInt32 value)
@ -1487,6 +1488,11 @@ NS_IMETHODIMP nsPref::Observe(nsISupports *aSubject, const PRUnichar *aTopic, co
PREF_ClearAllUserPrefs();
rv = ReadUserPrefs();
}
else if (!nsCRT::strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) {
// we're shutting down now, so we need to clean up and
// eliminate our reference to the JS runtime
ShutDown();
}
return rv;
}