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 782e4ec591c..d838325a953 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -553,6 +553,10 @@ static HRESULT WINAPI HTMLDOMNode_insertBefore(IHTMLDOMNode *iface, IHTMLDOMNode
TRACE("(%p)->(%p %s %p)\n", This, newChild, debugstr_variant(&refChild), node);
+ *node = NULL; + if(!newChild) + return E_INVALIDARG; + new_child = get_node_obj(newChild); if(!new_child) { ERR("invalid newChild\n"); diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 1cdc1e3146d..914267c67a1 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -5630,9 +5630,14 @@ static void _test_node_append_child_discard(unsigned line, IUnknown *node_unk, I static IHTMLDOMNode *_test_node_insertbefore(unsigned line, IUnknown *node_unk, IHTMLDOMNode *child, VARIANT *var) { IHTMLDOMNode *node = _get_node_iface(line, node_unk); - IHTMLDOMNode *new_child = NULL; + IHTMLDOMNode *new_child = (void*)0xdeadbeef; HRESULT hres;
+ hres = IHTMLDOMNode_insertBefore(node, NULL, *var, &new_child); + ok_(__FILE__,line) (hres == E_INVALIDARG, "insertBefore returned: %08lx\n", hres); + ok_(__FILE__,line) (new_child == NULL, "new_child != NULL\n"); + + new_child = NULL; hres = IHTMLDOMNode_insertBefore(node, child, *var, &new_child); ok_(__FILE__,line) (hres == S_OK, "insertBefore failed: %08lx\n", hres); ok_(__FILE__,line) (new_child != NULL, "new_child == NULL\n");