зеркало из https://github.com/mozilla/gecko-dev.git
fix for #62401 - r=jsg sr=brendan
clean up references to the global runtime before services are shutdown, but acting as an observer on XPCOM shutdown
This commit is contained in:
Родитель
8fb23ce1a8
Коммит
11ba78572a
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче