Index: Source/platform/LifecycleNotifier.h |
diff --git a/Source/platform/LifecycleNotifier.h b/Source/platform/LifecycleNotifier.h |
index 818cd931b998d9a6583f08f1bc2a21d13b8a1c87..4a638f5eb1c7383d207d7e97b9f5e0e6e241d8b6 100644 |
--- a/Source/platform/LifecycleNotifier.h |
+++ b/Source/platform/LifecycleNotifier.h |
@@ -45,9 +45,13 @@ public: |
return adoptPtr(new LifecycleNotifier(context)); |
} |
+ virtual ~LifecycleNotifier() |
+ { |
+ ASSERT(!m_observers.size()); |
+ ASSERT(!m_context); |
+ } |
- virtual ~LifecycleNotifier(); |
- |
+ void contextDestroyed(); |
// FIXME: this won't need to be virtual anymore. |
virtual void addObserver(Observer*); |
@@ -84,7 +88,7 @@ private: |
}; |
template<typename T> |
-inline LifecycleNotifier<T>::~LifecycleNotifier() |
+inline void LifecycleNotifier<T>::contextDestroyed() |
{ |
TemporaryChange<IterationType> scope(this->m_iterating, IteratingOverAll); |
for (typename ObserverSet::iterator it = m_observers.begin(); it != m_observers.end(); it = m_observers.begin()) { |
@@ -93,6 +97,7 @@ inline LifecycleNotifier<T>::~LifecycleNotifier() |
ASSERT(observer->lifecycleContext() == m_context); |
observer->contextDestroyed(); |
} |
+ m_context = nullptr; |
} |
template<typename T> |