Index: base/observer_list_threadsafe.h |
=================================================================== |
--- base/observer_list_threadsafe.h (revision 4449) |
+++ base/observer_list_threadsafe.h (working copy) |
@@ -81,11 +81,15 @@ |
void RemoveObserver(ObserverType* obs) { |
ObserverList<ObserverType>* list = NULL; |
MessageLoop* loop = MessageLoop::current(); |
+ if (!loop) |
+ return; // On shutdown, it is possible that current() is already null. |
{ |
AutoLock lock(list_lock_); |
- DCHECK(observer_lists_.find(loop) != observer_lists_.end()) << |
- "RemoveObserver called on for unknown thread"; |
list = observer_lists_[loop]; |
+ if (!list) { |
+ NOTREACHED() << "RemoveObserver called on for unknown thread"; |
+ return; |
+ } |
// If we're about to remove the last observer from the list, |
// then we can remove this observer_list entirely. |