msxml3: Don't use xmlnode's IXMLDOMNode iface in get_childNode implementations.
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c
index aa0f2d0..9a0394d 100644
--- a/dlls/msxml3/attribute.c
+++ b/dlls/msxml3/attribute.c
@@ -238,7 +238,10 @@
IXMLDOMNodeList** outList)
{
domattr *This = impl_from_IXMLDOMAttribute( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI domattr_get_firstChild(
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index 56c2695..902fe26 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -249,7 +249,10 @@
IXMLDOMNodeList** outList)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI domcdata_get_firstChild(
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index 3a30d6c..8763864 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -242,7 +242,10 @@
IXMLDOMNodeList** outList)
{
domcomment *This = impl_from_IXMLDOMComment( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI domcomment_get_firstChild(
diff --git a/dlls/msxml3/docfrag.c b/dlls/msxml3/docfrag.c
index 5bc8e4b..ed8b6c5 100644
--- a/dlls/msxml3/docfrag.c
+++ b/dlls/msxml3/docfrag.c
@@ -244,7 +244,10 @@
IXMLDOMNodeList** outList)
{
domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI domfrag_get_firstChild(
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index f2a7ad6..f7400f4 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -752,7 +752,10 @@
IXMLDOMNodeList** childList )
{
domdoc *This = impl_from_IXMLDOMDocument3( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), childList );
+
+ TRACE("(%p)->(%p)\n", This, childList);
+
+ return node_get_child_nodes(&This->node, childList);
}
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 3d6228d..c7c8d45 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -253,7 +253,10 @@
IXMLDOMNodeList** outList)
{
domelem *This = impl_from_IXMLDOMElement( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI domelem_get_firstChild(
diff --git a/dlls/msxml3/entityref.c b/dlls/msxml3/entityref.c
index 9fb9ab3..3b8ae53 100644
--- a/dlls/msxml3/entityref.c
+++ b/dlls/msxml3/entityref.c
@@ -240,7 +240,10 @@
IXMLDOMNodeList** outList)
{
entityref *This = impl_from_IXMLDOMEntityReference( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI entityref_get_firstChild(
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index f54e9ae..8964818 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -163,6 +163,8 @@
extern HRESULT node_get_content(xmlnode*,VARIANT*);
extern HRESULT node_put_value(xmlnode*,VARIANT*);
extern HRESULT node_get_parent(xmlnode*,IXMLDOMNode**);
+extern HRESULT node_get_child_nodes(xmlnode*,IXMLDOMNodeList**);
+
extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document);
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 7bcbe12..aa494c4 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -293,22 +293,24 @@
return E_NOTIMPL;
}
+HRESULT node_get_child_nodes(xmlnode *This, IXMLDOMNodeList **ret)
+{
+ if(!ret)
+ return E_INVALIDARG;
+
+ *ret = create_children_nodelist(This->node);
+ if(!*ret)
+ return E_OUTOFMEMORY;
+
+ return S_OK;
+}
+
static HRESULT WINAPI xmlnode_get_childNodes(
IXMLDOMNode *iface,
IXMLDOMNodeList** childList)
{
- xmlnode *This = impl_from_IXMLDOMNode( iface );
-
- TRACE("(%p)->(%p)\n", This, childList );
-
- if ( !childList )
- return E_INVALIDARG;
-
- *childList = create_children_nodelist(This->node);
- if (*childList == NULL)
- return E_OUTOFMEMORY;
-
- return S_OK;
+ ERR("Should not be called\n");
+ return E_NOTIMPL;
}
static HRESULT WINAPI xmlnode_get_firstChild(
@@ -1825,7 +1827,10 @@
IXMLDOMNodeList** outList)
{
unknode *This = impl_from_unkIXMLDOMNode( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI unknode_get_firstChild(
diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index 95f3327..20e6bd6 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -255,7 +255,10 @@
IXMLDOMNodeList** outList)
{
dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI dom_pi_get_firstChild(
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index 48801d6..5891814c 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -255,7 +255,10 @@
IXMLDOMNodeList** outList)
{
domtext *This = impl_from_IXMLDOMText( iface );
- return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList );
+
+ TRACE("(%p)->(%p)\n", This, outList);
+
+ return node_get_child_nodes(&This->node, outList);
}
static HRESULT WINAPI domtext_get_firstChild(