Module: wine Branch: master Commit: 13df042891254c1dfc2b860a2d86b0fb5968d56e URL: http://source.winehq.org/git/wine.git/?a=commit;h=13df042891254c1dfc2b860a2d...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jul 26 17:52:42 2012 +0200
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(+), 0 deletions(-)
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) {