Nikolay Sivov : msxml3: Properly update node to doc link when cloning.

Alexandre Julliard julliard at winehq.org
Wed Nov 21 14:45:16 CST 2012


Module: wine
Branch: master
Commit: 2b5ddbfe9a39b7c16fb20b33b0201252c51532cf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2b5ddbfe9a39b7c16fb20b33b0201252c51532cf

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Nov 21 19:50:32 2012 -0500

msxml3: Properly update node to doc link when cloning.

---

 dlls/msxml3/node.c         |    2 +-
 dlls/msxml3/tests/domdoc.c |    7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 30ce1b9..7b6e1ab 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -595,7 +595,7 @@ HRESULT node_clone(xmlnode *This, VARIANT_BOOL deep, IXMLDOMNode **cloneNode)
     clone = xmlCopyNode(This->node, deep ? 1 : 2);
     if (clone)
     {
-        clone->doc = This->node->doc;
+        xmlSetTreeDoc(clone, This->node->doc);
         xmldoc_add_orphan(clone->doc, clone);
 
         node = create_node(clone);
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 4b894b0..3a62c95 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -6073,7 +6073,7 @@ static void test_cloneNode(void )
     IXMLDOMNamedNodeMap *mapAttr;
     LONG length, length1;
     LONG attr_cnt, attr_cnt1;
-    IXMLDOMNode *node;
+    IXMLDOMNode *node, *attr;
     IXMLDOMNode *node_clone;
     IXMLDOMNode *node_first;
     HRESULT hr;
@@ -6134,6 +6134,11 @@ static void test_cloneNode(void )
     hr = IXMLDOMNamedNodeMap_get_length(mapAttr, &attr_cnt1);
     ok( hr == S_OK, "ret %08x\n", hr );
     ok(attr_cnt1 == 3, "got %d\n", attr_cnt1);
+    /* now really get some attributes from cloned element */
+    attr = NULL;
+    hr = IXMLDOMNamedNodeMap_getNamedItem(mapAttr, _bstr_("id"), &attr);
+    ok(hr == S_OK, "ret %08x\n", hr);
+    IXMLDOMNode_Release(attr);
     IXMLDOMNamedNodeMap_Release(mapAttr);
 
     ok(length == length1, "wrong Child count (%d, %d)\n", length, length1);




More information about the wine-cvs mailing list