From d04b9da1699f50f3db412833aa47afbb2e11e4c6 Mon Sep 17 00:00:00 2001 From: Cameron Kaiser Date: Mon, 15 Jan 2018 16:15:19 -0800 Subject: [PATCH] #457: M1414452 converted to nsAutoTArray from AutoTArray --- dom/base/DirectionalityUtils.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/dom/base/DirectionalityUtils.cpp b/dom/base/DirectionalityUtils.cpp index 06877d0e9..e78b30e64 100644 --- a/dom/base/DirectionalityUtils.cpp +++ b/dom/base/DirectionalityUtils.cpp @@ -436,7 +436,7 @@ class nsTextNodeDirectionalityMap nsTextNodeDirectionalityMap* map = reinterpret_cast(aPropertyValue); - map->EnsureMapIsClear(textNode); + map->EnsureMapIsClear(); delete map; } @@ -565,11 +565,12 @@ private: return OpRemove; } - static nsCheapSetOperator ClearEntry(nsPtrHashKey* aEntry, void* aData) + static nsCheapSetOperator TakeEntries(nsPtrHashKey* aEntry, void* aData) { - Element* rootNode = aEntry->GetKey(); - rootNode->ClearHasDirAutoSet(); - rootNode->DeleteProperty(nsGkAtoms::dirAutoSetBy); + // TenFourFox lacks AutoTArray, so convert bug 1414452 to nsAutoTArray. + nsAutoTArray* entries = + static_cast*>(aData); + entries->AppendElement(aEntry->GetKey()); return OpRemove; } @@ -585,12 +586,18 @@ public: mElements.EnumerateEntries(ResetNodeDirection, &data); } - void EnsureMapIsClear(nsINode* aTextNode) + void EnsureMapIsClear() { AutoRestore restore(mElementToBeRemoved); - DebugOnly clearedEntries = - mElements.EnumerateEntries(ClearEntry, aTextNode); - MOZ_ASSERT(clearedEntries == 0, "Map should be empty already"); + // As above. + nsAutoTArray entries; + mElements.EnumerateEntries(TakeEntries, &entries); + uint32_t size = entries.Length(); + for(uint32_t i = 0; i < size; i++) { + Element* el = entries.ElementAt(i); + el->ClearHasDirAutoSet(); + el->DeleteProperty(nsGkAtoms::dirAutoSetBy); + } } static void RemoveElementFromMap(nsINode* aTextNode, Element* aElement) @@ -630,7 +637,7 @@ public: static void EnsureMapIsClearFor(nsINode* aTextNode) { if (aTextNode->HasTextNodeDirectionalityMap()) { - GetDirectionalityMap(aTextNode)->EnsureMapIsClear(aTextNode); + GetDirectionalityMap(aTextNode)->EnsureMapIsClear(); } } };