From 13df042891254c1dfc2b860a2d86b0fb5968d56e Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 26 Jul 2012 17:52:42 +0200 Subject: [PATCH] mshtml: Properly handle NULL VT_DISPATCH refChild in IHTMLDOMNode::insertBefore. --- dlls/mshtml/htmlnode.c | 2 ++ dlls/mshtml/tests/dom.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index 7fcff175003..b0cf4c3171c 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -513,6 +513,8 @@ static HRESULT WINAPI HTMLDOMNode_insertBefore(IHTMLDOMNode *iface, IHTMLDOMNode case VT_NULL: break; case VT_DISPATCH: { + if(!V_DISPATCH(&refChild)) + break; ref_node = get_node_obj(This->doc, (IUnknown*)V_DISPATCH(&refChild)); if(!ref_node) { ERR("unvalid node\n"); diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index b0c5335cb5b..00c1498f010 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -5920,6 +5920,13 @@ static void test_create_elems(IHTMLDocument2 *doc) test_elem_innertext(body, "insert test"); test_elem_innerhtml((IUnknown*)body, "insert test"); + node = test_create_text(doc, " Test"); + V_VT(&var) = VT_DISPATCH; + V_DISPATCH(&var) = NULL; + test_node_insertbefore((IUnknown*)body, node, &var); + test_elem_innertext(body, "insert test Test"); + IHTMLDOMNode_Release(node); + hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5); if(hres == S_OK) { -- 2.11.4.GIT