diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp index 46b019b943..c7297698c2 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -1563,20 +1563,16 @@ AdoptNodeIntoOwnerDoc(nsINode *aParent, nsINode *aNode) nsIDocument *doc = aParent->OwnerDoc(); - nsresult rv; - nsCOMPtr domDoc = do_QueryInterface(doc, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr node = do_QueryInterface(aNode, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr adoptedNode; - rv = domDoc->AdoptNode(node, getter_AddRefs(adoptedNode)); - NS_ENSURE_SUCCESS(rv, rv); + ErrorResult rv; + nsINode* adoptedNode = doc->AdoptNode(*aNode, rv); + rv.WouldReportJSException(); + if (NS_WARN_IF(rv.Failed())) { + return rv.StealNSResult(); + } NS_ASSERTION(aParent->OwnerDoc() == doc, "ownerDoc chainged while adopting"); - NS_ASSERTION(adoptedNode == node, "Uh, adopt node changed nodes?"); + NS_ASSERTION(adoptedNode == aNode, "Uh, adopt node changed nodes?"); NS_ASSERTION(aParent->OwnerDoc() == aNode->OwnerDoc(), "ownerDocument changed again after adopting!");