msxml3: removeChild can only delete direct children.
This commit is contained in:
parent
d1c8083b93
commit
75606f3583
|
@ -619,7 +619,7 @@ static HRESULT WINAPI xmlnode_removeChild(
|
|||
IXMLDOMNode** oldChild)
|
||||
{
|
||||
xmlnode *This = impl_from_IXMLDOMNode( iface );
|
||||
xmlNode *ancestor, *child_node_ptr;
|
||||
xmlNode *child_node_ptr;
|
||||
HRESULT hr;
|
||||
IXMLDOMNode *child;
|
||||
|
||||
|
@ -634,14 +634,8 @@ static HRESULT WINAPI xmlnode_removeChild(
|
|||
if(FAILED(hr))
|
||||
return hr;
|
||||
|
||||
child_node_ptr = ancestor = impl_from_IXMLDOMNode(child)->node;
|
||||
while(ancestor->parent)
|
||||
{
|
||||
if(ancestor->parent == This->node)
|
||||
break;
|
||||
ancestor = ancestor->parent;
|
||||
}
|
||||
if(!ancestor->parent)
|
||||
child_node_ptr = impl_from_IXMLDOMNode(child)->node;
|
||||
if(child_node_ptr->parent != This->node)
|
||||
{
|
||||
WARN("childNode %p is not a child of %p\n", childNode, iface);
|
||||
IXMLDOMNode_Release(child);
|
||||
|
|
|
@ -1797,8 +1797,8 @@ static void test_removeChild(void)
|
|||
/* ba_node is a descendant of element, but not a direct child. */
|
||||
removed_node = (void*)0xdeadbeef;
|
||||
r = IXMLDOMElement_removeChild( element, ba_node, &removed_node );
|
||||
todo_wine ok( r == E_INVALIDARG, "ret %08x\n", r );
|
||||
todo_wine ok( removed_node == NULL, "%p\n", removed_node );
|
||||
ok( r == E_INVALIDARG, "ret %08x\n", r );
|
||||
ok( removed_node == NULL, "%p\n", removed_node );
|
||||
|
||||
r = IXMLDOMElement_removeChild( element, fo_node, &removed_node );
|
||||
ok( r == S_OK, "ret %08x\n", r);
|
||||
|
|
Loading…
Reference in New Issue