From e7ff1019969650eda38e7957600fde9af5774984 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 16 Oct 2008 13:55:41 -0500 Subject: [PATCH] msxml3: Update orphaned list in put_documentElement. --- dlls/msxml3/domdoc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index 8ef0db46111..c685889a953 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; }