| Index: Source/platform/LifecycleNotifier.h
|
| diff --git a/Source/platform/LifecycleNotifier.h b/Source/platform/LifecycleNotifier.h
|
| index 64fbb7998f0359ded1380771547e3b26109782e9..239c450eed805224746892a029f9d02dbc66703b 100644
|
| --- a/Source/platform/LifecycleNotifier.h
|
| +++ b/Source/platform/LifecycleNotifier.h
|
| @@ -65,6 +65,8 @@ protected:
|
| {
|
| }
|
|
|
| + void detachObservers();
|
| +
|
| Context* context() const { return m_context; }
|
|
|
| enum IterationType {
|
| @@ -93,12 +95,18 @@ inline LifecycleNotifier<T>::~LifecycleNotifier()
|
| // ASSERT(!m_observers.size() || m_didCallContextDestroyed);
|
|
|
| #if !ENABLE(OILPAN)
|
| + detachObservers();
|
| +#endif
|
| +}
|
| +
|
| +template<typename T>
|
| +inline void LifecycleNotifier<T>::detachObservers()
|
| +{
|
| TemporaryChange<IterationType> scope(this->m_iterating, IteratingOverAll);
|
| for (Observer* observer : m_observers) {
|
| - ASSERT(observer->lifecycleContext() == m_context);
|
| + ASSERT(!observer->lifecycleContext() || observer->lifecycleContext() == m_context);
|
| observer->clearLifecycleContext();
|
| }
|
| -#endif
|
| }
|
|
|
| template<typename T>
|
|
|