From e614edadb830bbb02df25adbcc3cf642ec914ab5 Mon Sep 17 00:00:00 2001 From: "timeless@mozdev.org" Date: Wed, 12 Aug 2009 11:49:52 +0200 Subject: [PATCH] Bug 485834 ObserverService shouldn't recurse infinitely for stupid consumers r=dougt --- xpcom/ds/nsObserverService.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xpcom/ds/nsObserverService.cpp b/xpcom/ds/nsObserverService.cpp index 78d6a32e7dde..38c62490b6b6 100644 --- a/xpcom/ds/nsObserverService.cpp +++ b/xpcom/ds/nsObserverService.cpp @@ -147,6 +147,9 @@ nsObserverService::RemoveObserver(nsIObserver* anObserver, const char* aTopic) if (!observerList) return NS_ERROR_FAILURE; + /* This death grip is to protect against stupid consumers who call + RemoveObserver from their Destructor, see bug 485834/bug 325392. */ + nsCOMPtr kungFuDeathGrip(anObserver); return observerList->RemoveObserver(anObserver); }