From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/domdoc.c | 17 ++--------------- dlls/msxml3/msxml_private.h | 1 + dlls/msxml3/node.c | 13 +++++++++++++ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index 252135b4f8d..34b482229a1 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -840,19 +840,6 @@ static HRESULT WINAPI domdoc_get_implementation(IXMLDOMDocument3 *iface, IXMLDOM return create_dom_implementation(impl); } -static struct domnode * domdoc_get_document_element(struct domdoc *doc) -{ - struct domnode *node; - - LIST_FOR_EACH_ENTRY(node, &doc->node->children, struct domnode, entry) - { - if (node->type == NODE_ELEMENT) - return node; - } - - return NULL; -} - static HRESULT WINAPI domdoc_get_documentElement(IXMLDOMDocument3 *iface, IXMLDOMElement **ret) { domdoc *doc = impl_from_IXMLDOMDocument3(iface); @@ -867,7 +854,7 @@ static HRESULT WINAPI domdoc_get_documentElement(IXMLDOMDocument3 *iface, IXMLDO *ret = NULL; - if ((element = domdoc_get_document_element(doc))) + if ((element = domnode_get_root_element(doc->node))) { if (SUCCEEDED(hr = create_node(element, &node))) { @@ -889,7 +876,7 @@ static HRESULT WINAPI domdoc_putref_documentElement(IXMLDOMDocument3 *iface, IXM TRACE("%p, %p.\n", iface, element); - if ((current = domdoc_get_document_element(doc))) + if ((current = domnode_get_root_element(doc->node))) { if (SUCCEEDED(hr = create_node(current, &node))) { diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h index 794053c5390..3a407ea9feb 100644 --- a/dlls/msxml3/msxml_private.h +++ b/dlls/msxml3/msxml_private.h @@ -259,6 +259,7 @@ extern HRESULT domnode_create(DOMNodeType type, const WCHAR *name, int name_len, extern void domnode_destroy_tree(struct domnode *tree); extern struct domnode *domnode_addref(struct domnode *node); extern void domnode_release(struct domnode *node); +extern struct domnode *domnode_get_root_element(struct domnode *doc); extern struct domnode *domnode_get_first_child(struct domnode *node); extern struct domnode *domnode_get_next_sibling(struct domnode *node); extern HRESULT domnode_get_attribute(const struct domnode *node, const WCHAR *name, struct domnode **attr); diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 8d1c8418ca6..5899ce47992 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -358,6 +358,19 @@ static struct domnode *node_from_entry(struct list *entry) return entry ? LIST_ENTRY(entry, struct domnode, entry) : NULL; } +struct domnode * domnode_get_root_element(struct domnode *doc) +{ + struct domnode *node; + + LIST_FOR_EACH_ENTRY(node, &doc->children, struct domnode, entry) + { + if (node->type == NODE_ELEMENT) + return node; + } + + return NULL; +} + struct domnode *domnode_get_first_child(struct domnode *node) { return node_from_entry(list_head(&node->children)); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10938