Piotr Caban : msxml3: oldChild in xmlnode_removeChild may be NULL.

Alexandre Julliard julliard at winehq.org
Thu Jul 10 14:07:28 CDT 2008


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

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Thu Jul 10 15:22:21 2008 +0200

msxml3: oldChild in xmlnode_removeChild may be NULL.

---

 dlls/msxml3/node.c         |    7 +++++--
 dlls/msxml3/tests/domdoc.c |   12 ++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index bdc9ac9..a33777f 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -625,7 +625,8 @@ static HRESULT WINAPI xmlnode_removeChild(
 
     TRACE("%p->(%p, %p)\n", This, childNode, oldChild);
 
-    *oldChild = NULL;
+    if(oldChild)
+        *oldChild = NULL;
 
     if(!childNode) return E_INVALIDARG;
 
@@ -651,7 +652,9 @@ static HRESULT WINAPI xmlnode_removeChild(
 
     IXMLDOMNode_Release(child);
     IXMLDOMNode_AddRef(childNode);
-    *oldChild = childNode;
+
+    if(oldChild)
+        *oldChild = childNode;
     return S_OK;
 }
 
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 3745fca..19a9a2f 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -1769,6 +1769,18 @@ static void test_removeChild(void)
 
     IXMLDOMNode_Release( node2 );
     IXMLDOMNode_Release( node4 );
+
+    r = IXMLDOMNodeList_get_item( node_list, 0, &node4 );
+    ok( r == S_OK, "ret %08x\n", r);
+
+    r = IXMLDOMElement_removeChild( element, node4, NULL );
+    ok( r == S_OK, "ret %08x\n", r);
+
+    r = IXMLDOMNode_get_parentNode( node4, &node3 );
+    ok( r == S_FALSE, "ret %08x\n", r);
+    ok( node3 == NULL, "%p\n", node3 );
+
+    IXMLDOMNode_Release( node4 );
     IXMLDOMNodeList_Release( node_list2 );
     IXMLDOMNode_Release( node );
     IXMLDOMNodeList_Release( node_list );




More information about the wine-cvs mailing list