From dab1cd9e5ca52770eb6ced1b0d3b7948463576ff Mon Sep 17 00:00:00 2001 From: Pale Moon Date: Tue, 13 Dec 2016 02:21:49 +0100 Subject: [PATCH] Handle failing node adoption properly. --- dom/base/nsNodeUtils.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dom/base/nsNodeUtils.cpp b/dom/base/nsNodeUtils.cpp index 9c1f757fcd..8806773a44 100644 --- a/dom/base/nsNodeUtils.cpp +++ b/dom/base/nsNodeUtils.cpp @@ -471,8 +471,14 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, JSAutoCompartment ac(cx, wrapper); rv = ReparentWrapper(cx, wrapper); if (NS_FAILED(rv)) { + if (wasRegistered) { + aNode->OwnerDoc()->UnregisterActivityObserver(aNode->AsElement()); + } aNode->mNodeInfo.swap(newNodeInfo); + if (wasRegistered) { + aNode->OwnerDoc()->RegisterActivityObserver(aNode->AsElement()); + } return rv; } }