diff --git a/editor/libeditor/html/nsHTMLEditRules.cpp b/editor/libeditor/html/nsHTMLEditRules.cpp index 7e9f9cc3897..cd8e106b504 100644 --- a/editor/libeditor/html/nsHTMLEditRules.cpp +++ b/editor/libeditor/html/nsHTMLEditRules.cpp @@ -5957,26 +5957,18 @@ nsresult nsHTMLEditRules::GetChildNodesForOperation(nsIDOMNode *inNode, nsCOMArray& outArrayOfNodes) { - NS_ENSURE_TRUE(inNode, NS_ERROR_NULL_POINTER); - - nsCOMPtr childNodes; - nsresult res = inNode->GetChildNodes(getter_AddRefs(childNodes)); - NS_ENSURE_SUCCESS(res, res); - NS_ENSURE_TRUE(childNodes, NS_ERROR_NULL_POINTER); - PRUint32 childCount; - res = childNodes->GetLength(&childCount); - NS_ENSURE_SUCCESS(res, res); - - PRUint32 i; - nsCOMPtr node; - for (i = 0; i < childCount; i++) - { - res = childNodes->Item( i, getter_AddRefs(node)); - NS_ENSURE_TRUE(node, NS_ERROR_FAILURE); - if (!outArrayOfNodes.AppendObject(node)) + nsCOMPtr node = do_QueryInterface(inNode); + NS_ENSURE_TRUE(node, NS_ERROR_NULL_POINTER); + + for (nsIContent* child = node->GetFirstChild(); + child; + child = child->GetNextSibling()) { + nsIDOMNode* childNode = child->AsDOMNode(); + if (!outArrayOfNodes.AppendObject(childNode)) { return NS_ERROR_FAILURE; + } } - return res; + return NS_OK; }