Michael Karcher : msxml3: Simplify IXMLDOMNodeMap::removeNamedItem.

Alexandre Julliard julliard at winehq.org
Mon Nov 3 09:06:59 CST 2008


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

Author: Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>
Date:   Sun Nov  2 13:34:44 2008 +0100

msxml3: Simplify IXMLDOMNodeMap::removeNamedItem.

---

 dlls/msxml3/nodemap.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c
index e4150e5..8c7c1d0 100644
--- a/dlls/msxml3/nodemap.c
+++ b/dlls/msxml3/nodemap.c
@@ -289,7 +289,7 @@ static HRESULT WINAPI xmlnodemap_removeNamedItem(
 {
     xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
     xmlChar *element_name;
-    xmlAttrPtr attr, attr_copy;
+    xmlAttrPtr attr;
     xmlNodePtr node;
 
     TRACE("%p %s %p\n", This, debugstr_w(name), namedItem );
@@ -314,13 +314,15 @@ static HRESULT WINAPI xmlnodemap_removeNamedItem(
 
     if ( namedItem )
     {
-        attr_copy = xmlCopyProp( NULL, attr );
-        attr_copy->doc = node->doc;
-        /* The cast here is OK, xmlFreeNode handles xmlAttrPtr pointers */
-        xmldoc_add_orphan(attr_copy->doc, (xmlNodePtr) attr_copy);
-        *namedItem = create_node( (xmlNodePtr) attr_copy );
+        xmlUnlinkNode( (xmlNodePtr) attr );
+        xmldoc_add_orphan( attr->doc, (xmlNodePtr) attr );
+        *namedItem = create_node( (xmlNodePtr) attr );
+    }
+    else
+    {
+        if( xmlRemoveProp( attr ) == -1 )
+            ERR("xmlRemoveProp failed\n");
     }
-    xmlRemoveProp( attr );
 
     return S_OK;
 }




More information about the wine-cvs mailing list