From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlnode.c | 4 ++++ dlls/mshtml/tests/dom.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index f06c7609288..5e3ded2c5cc 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -619,6 +619,10 @@ static HRESULT WINAPI HTMLDOMNode_removeChild(IHTMLDOMNode *iface, IHTMLDOMNode
TRACE("(%p)->(%p %p)\n", This, oldChild, node);
+ *node = NULL; + if(!oldChild) + return E_INVALIDARG; + node_obj = get_node_obj(oldChild); if(!node_obj) return E_FAIL; diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index b58278b6169..8dc197efb56 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -5642,9 +5642,14 @@ static IHTMLDOMNode *_test_node_insertbefore(unsigned line, IUnknown *node_unk, static void _test_node_remove_child(unsigned line, IUnknown *unk, IHTMLDOMNode *child) { IHTMLDOMNode *node = _get_node_iface(line, unk); - IHTMLDOMNode *new_node = NULL; + IHTMLDOMNode *new_node = (void*)0xdeadbeef; HRESULT hres;
+ hres = IHTMLDOMNode_removeChild(node, NULL, &new_node); + ok_(__FILE__,line) (hres == E_INVALIDARG, "removeChild returned: %08lx\n", hres); + ok_(__FILE__,line) (new_node == NULL, "new_node != NULL\n"); + + new_node = NULL; hres = IHTMLDOMNode_removeChild(node, child, &new_node); ok_(__FILE__,line) (hres == S_OK, "removeChild failed: %08lx\n", hres); ok_(__FILE__,line) (new_node != NULL, "new_node == NULL\n");