diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c
index 7fcff17..b0cf4c3 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 b0c5335..00c1498 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)
{