Bug 594222 - Prevent RemoveObservers from being called more than once. r=dougt a=dougt

This commit is contained in:
Josh Matthews 2010-09-07 18:22:00 -04:00
parent ce401c553a
commit fe636eb3c3
2 changed files with 6 additions and 1 deletions

View File

@ -44,7 +44,7 @@
nsCategoryObserver::nsCategoryObserver(const char* aCategory,
nsCategoryListener* aListener)
: mListener(nsnull), mCategory(aCategory)
: mListener(nsnull), mCategory(aCategory), mObserversRemoved(false)
{
if (!mHash.Init()) {
// OOM
@ -113,6 +113,10 @@ nsCategoryObserver::ListenerDied() {
NS_HIDDEN_(void)
nsCategoryObserver::RemoveObservers() {
if (mObserversRemoved)
return;
mObserversRemoved = true;
nsCOMPtr<nsIObserverService> obsSvc =
do_GetService(NS_OBSERVERSERVICE_CONTRACTID);
if (obsSvc) {

View File

@ -78,6 +78,7 @@ class NS_COM_GLUE nsCategoryObserver : public nsIObserver {
nsDataHashtable<nsCStringHashKey, nsCString> mHash;
nsCategoryListener* mListener;
nsCString mCategory;
bool mObserversRemoved;
};
/**