Module: wine Branch: master Commit: 93e76ece37b1fa1330d83f446a3aebfb5198b744 URL: http://source.winehq.org/git/wine.git/?a=commit;h=93e76ece37b1fa1330d83f446a...
Author: Piotr Caban piotr.caban@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 );