From 499c07231c6c3657fce3f19dfd4d8fbe328c4c11 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Mon, 26 Oct 2015 22:21:51 -0700 Subject: [PATCH] Bug 1187782 (part 2) - Replace nsBaseHashtable::EnumerateRead() calls in dom/base/ with iterators. r=khuey. --HG-- extra : rebase_source : e731e832371a92b40b1dd2591dffae1c5a682b3b --- dom/base/nsGlobalWindow.cpp | 4 +--- dom/base/nsGlobalWindow.h | 17 ++++++++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 3d182d71fb23..e43a0c3cc207 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -12976,9 +12976,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsGlobalChromeWindow, tmp->mMessageManager.get())->Disconnect(); NS_IMPL_CYCLE_COLLECTION_UNLINK(mMessageManager) } - - tmp->mGroupMessageManagers.EnumerateRead(DisconnectGroupMessageManager, nullptr); - tmp->mGroupMessageManagers.Clear(); + tmp->DisconnectAndClearGroupMessageManagers(); NS_IMPL_CYCLE_COLLECTION_UNLINK(mGroupMessageManagers) NS_IMPL_CYCLE_COLLECTION_UNLINK_END diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h index 8ce4d5beea37..aefc7da0990d 100644 --- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -1906,15 +1906,15 @@ public: static already_AddRefed Create(nsGlobalWindow *aOuterWindow); - static PLDHashOperator - DisconnectGroupMessageManager(const nsAString& aKey, - nsIMessageBroadcaster* aMM, - void* aUserArg) + void DisconnectAndClearGroupMessageManagers() { - if (aMM) { - static_cast(aMM)->Disconnect(); + for (auto iter = mGroupMessageManagers.Iter(); !iter.Done(); iter.Next()) { + nsIMessageBroadcaster* mm = iter.UserData(); + if (mm) { + static_cast(mm)->Disconnect(); + } } - return PL_DHASH_NEXT; + mGroupMessageManagers.Clear(); } protected: @@ -1931,8 +1931,7 @@ protected: MOZ_ASSERT(mCleanMessageManager, "chrome windows may always disconnect the msg manager"); - mGroupMessageManagers.EnumerateRead(DisconnectGroupMessageManager, nullptr); - mGroupMessageManagers.Clear(); + DisconnectAndClearGroupMessageManagers(); if (mMessageManager) { static_cast(