Jacek Caban : msxml3: Update orphaned list in put_documentElement.

Alexandre Julliard julliard at winehq.org
Fri Oct 17 07:25:47 CDT 2008


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Oct 16 13:55:41 2008 -0500

msxml3: Update orphaned list in put_documentElement.

---

 dlls/msxml3/domdoc.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 8ef0db4..c685889 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -922,6 +922,7 @@ static HRESULT WINAPI domdoc_put_documentElement(
 {
     domdoc *This = impl_from_IXMLDOMDocument2( iface );
     IXMLDOMNode *elementNode;
+    xmlNodePtr oldRoot;
     xmlnode *xmlNode;
     HRESULT hr;
 
@@ -932,9 +933,17 @@ static HRESULT WINAPI domdoc_put_documentElement(
         return hr;
 
     xmlNode = impl_from_IXMLDOMNode( elementNode );
-    xmlDocSetRootElement( get_doc(This), xmlNode->node);
+
+    if(!xmlNode->node->parent)
+        if(xmldoc_remove_orphan(xmlNode->node->doc, xmlNode->node) != S_OK)
+            WARN("%p is not an orphan of %p\n", xmlNode->node->doc, xmlNode->node);
+
+    oldRoot = xmlDocSetRootElement( get_doc(This), xmlNode->node);
     IXMLDOMNode_Release( elementNode );
 
+    if(oldRoot)
+        xmldoc_add_orphan(oldRoot->doc, oldRoot);
+
     return S_OK;
 }
 




More information about the wine-cvs mailing list