From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/node.c | 4 ++++ dlls/msxml3/tests/domdoc.c | 8 -------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 7493ab49eb3..8d1c8418ca6 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -1392,6 +1392,7 @@ void domnode_release(struct domnode *node) domnode_destroy_tree(top); } +/* TODO: needs to handle allocation failures */ HRESULT node_clone_domnode(struct domnode *node, bool deep, struct domnode **cloned) { struct domnode *object, *n, *child; @@ -1425,6 +1426,9 @@ HRESULT node_clone_domnode(struct domnode *node, bool deep, struct domnode **clo domnode_insert_attribute(object, child, NULL); } + if (node->data) + object->data = SysAllocStringLen(node->data, SysStringLen(node->data)); + *cloned = object; return hr; diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 5618dd9b42c..bb0742af215 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -5879,7 +5879,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"Text"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5887,7 +5886,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"Text"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5900,7 +5898,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<![CDATA[CData]]>"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5908,7 +5905,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<![CDATA[CData]]>"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5921,7 +5917,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<?target data?>"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5929,7 +5924,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<?target data?>"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5942,7 +5936,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<!--comment-->"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -5950,7 +5943,6 @@ static void test_cloneNode(void ) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<!--comment-->"), "Unexpected str %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10826