Alistair Leslie-Hughes : msxml3: Use our parent doc if we don't have one.

Alexandre Julliard julliard at winehq.org
Mon Feb 9 10:29:55 CST 2009


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

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Thu Feb  5 20:43:59 2009 +1100

msxml3: Use our parent doc if we don't have one.

---

 dlls/msxml3/node.c         |    5 +++++
 dlls/msxml3/tests/domdoc.c |   29 +++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 7baef30..72cc61e 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -387,6 +387,11 @@ static HRESULT get_node(
 
     if ( !out )
         return E_INVALIDARG;
+
+    /* if we dont have a doc, use our parent. */
+    if(node && !node->doc && node->parent)
+        node->doc = node->parent->doc;
+
     *out = create_node( node );
     if (!*out)
         return S_FALSE;
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 584eab3..c70e6ed 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -2404,6 +2404,7 @@ static void test_cloneNode(void )
     long nAttrCnt = 0, nAttrCnt1 = 0;
     IXMLDOMNode *node;
     IXMLDOMNode *node_clone;
+    IXMLDOMNode *node_first;
     HRESULT r;
     BSTR str;
     static const WCHAR szSearch[] = { 'l', 'c', '/', 'p', 'r', 0 };
@@ -2448,6 +2449,20 @@ static void test_cloneNode(void )
         return;
     }
 
+    r = IXMLDOMNode_get_firstChild(node_clone, &node_first);
+    ok( r == S_OK, "ret %08x\n", r );
+    if(r == S_OK)
+    {
+        IXMLDOMDocument *doc2;
+
+        r = IXMLDOMNode_get_ownerDocument(node_clone, &doc2);
+        ok( r == S_OK, "ret %08x\n", r );
+        if(r == S_OK)
+            IXMLDOMDocument_Release(doc2);
+
+        IXMLDOMNode_Release(node_first);
+    }
+
     r = IXMLDOMNode_get_childNodes(node, &pList);
     ok( r == S_OK, "ret %08x\n", r );
     if (pList)
@@ -2496,6 +2511,20 @@ static void test_cloneNode(void )
         return;
     }
 
+    r = IXMLDOMNode_get_firstChild(node_clone, &node_first);
+    ok( r == S_FALSE, "ret %08x\n", r );
+    if(r == S_OK)
+    {
+        IXMLDOMDocument *doc2;
+
+        r = IXMLDOMNode_get_ownerDocument(node_clone, &doc2);
+        ok( r == S_OK, "ret %08x\n", r );
+        if(r == S_OK)
+            IXMLDOMDocument_Release(doc2);
+
+        IXMLDOMNode_Release(node_first);
+    }
+
     r = IXMLDOMNode_get_childNodes(node_clone, &pList);
     ok( r == S_OK, "ret %08x\n", r );
     if (pList)




More information about the wine-cvs mailing list