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 | 10 ++++++++++ 2 files changed, 14 insertions(+)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index 032c6771729..f06c7609288 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -651,6 +651,10 @@ static HRESULT WINAPI HTMLDOMNode_replaceChild(IHTMLDOMNode *iface, IHTMLDOMNode
TRACE("(%p)->(%p %p %p)\n", This, newChild, oldChild, node);
+ *node = NULL; + if(!newChild || !oldChild) + return E_INVALIDARG; + node_new = get_node_obj(newChild); if(!node_new) return E_FAIL; diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index ea592ad5996..b58278b6169 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -11237,6 +11237,16 @@ static void test_replacechild_elems(IHTMLDocument2 *doc)
nodeBody = _get_node_iface(__LINE__, (IUnknown *)body);
+ nodeNew = (void*)0xdeadbeef; + hres = IHTMLDOMNode_replaceChild(nodeBody, node3, NULL, &nodeNew); + ok(hres == E_INVALIDARG, "Expected E_INVALIDARG, got 0x%08lx\n", hres); + ok(nodeNew == NULL, "nodeNew != NULL\n"); + + nodeNew = (void*)0xdeadbeef; + hres = IHTMLDOMNode_replaceChild(nodeBody, NULL, node2, &nodeNew); + ok(hres == E_INVALIDARG, "Expected E_INVALIDARG, got 0x%08lx\n", hres); + ok(nodeNew == NULL, "nodeNew != NULL\n"); + hres = IHTMLDOMNode_replaceChild(nodeBody, node3, node2, &nodeNew); ok(hres == S_OK, "Expected S_OK, got 0x%08lx\n", hres);
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");
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 5e3ded2c5cc..782e4ec591c 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -745,6 +745,10 @@ static HRESULT WINAPI HTMLDOMNode_appendChild(IHTMLDOMNode *iface, IHTMLDOMNode
TRACE("(%p)->(%p %p)\n", This, newChild, node);
+ *node = NULL; + if(!newChild) + return E_INVALIDARG; + node_obj = get_node_obj(newChild); if(!node_obj) return E_FAIL; diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 8dc197efb56..1cdc1e3146d 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -5600,9 +5600,14 @@ static IHTMLDOMNode *_test_node_append_child(unsigned line, IUnknown *node_unk, { IHTMLDOMNode *node = _get_node_iface(line, node_unk); IHTMLDOMNode *child = _get_node_iface(line, child_unk); - IHTMLDOMNode *new_child = NULL; + IHTMLDOMNode *new_child = (void*)0xdeadbeef; HRESULT hres;
+ hres = IHTMLDOMNode_appendChild(node, NULL, &new_child); + ok_(__FILE__,line) (hres == E_INVALIDARG, "appendChild returned: %08lx\n", hres); + ok_(__FILE__,line) (new_child == NULL, "new_child != NULL\n"); + + new_child = NULL; hres = IHTMLDOMNode_appendChild(node, child, &new_child); ok_(__FILE__,line) (hres == S_OK, "appendChild failed: %08lx\n", hres); ok_(__FILE__,line) (new_child != NULL, "new_child == NULL\n");
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");
This merge request was approved by Jacek Caban.