Module: wine Branch: master Commit: 17db41c3497f6e57e3ee8d001187354d2549c0ac URL: http://source.winehq.org/git/wine.git/?a=commit;h=17db41c3497f6e57e3ee8d0011...
Author: Alistair Leslie-Hughes leslie_alistair@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)