From 1544d4412ecfb9459ffa9087a1039e89da5c9c1b Mon Sep 17 00:00:00 2001 From: Hiroyuki Ikezoe Date: Fri, 28 Aug 2015 03:03:00 +0200 Subject: [PATCH] Bug 1197003 - Part 1 - PerformanceObserver::Disconenct() should be called before mPerformance is destroyed. r=baku --- dom/base/PerformanceObserver.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/dom/base/PerformanceObserver.cpp b/dom/base/PerformanceObserver.cpp index f3f9017f74c8..8822449ec3b4 100644 --- a/dom/base/PerformanceObserver.cpp +++ b/dom/base/PerformanceObserver.cpp @@ -23,10 +23,22 @@ using namespace mozilla; using namespace mozilla::dom; using namespace mozilla::dom::workers; -NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(PerformanceObserver, - mOwner, - mPerformance, - mCallback) +NS_IMPL_CYCLE_COLLECTION_CLASS(PerformanceObserver) +NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(PerformanceObserver) + tmp->Disconnect(); + NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mPerformance) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner) + NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER +NS_IMPL_CYCLE_COLLECTION_UNLINK_END +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(PerformanceObserver) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPerformance) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END +NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(PerformanceObserver) + NS_IMPL_CYCLE_COLLECTING_ADDREF(PerformanceObserver) NS_IMPL_CYCLE_COLLECTING_RELEASE(PerformanceObserver) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(PerformanceObserver)