diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 538a02f5b49..f99ab294926 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -776,6 +776,9 @@ static HRESULT document_write(HTMLDocument *This, SAFEARRAY *psarray, BOOL ln) return E_UNEXPECTED; } + if (!psarray) + return S_OK; + if(psarray->cDims != 1) { FIXME("cDims=%d\n", psarray->cDims); return E_INVALIDARG; diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index c0128a6d4d7..7fd9262d8ae 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -5921,6 +5921,22 @@ static void test_create_elems(IHTMLDocument2 *doc) IHTMLElement_Release(body); } +static void test_null_write(IHTMLDocument2 *doc) +{ + HRESULT hres; + + doc_write(doc, FALSE, NULL); + doc_write(doc, TRUE, NULL); + + hres = IHTMLDocument2_write(doc, NULL); + ok(hres == S_OK, + "Expected IHTMLDocument2::write to return S_OK, got 0x%08x\n", hres); + + hres = IHTMLDocument2_writeln(doc, NULL); + ok(hres == S_OK, + "Expected IHTMLDocument2::writeln to return S_OK, got 0x%08x\n", hres); +} + static void test_exec(IUnknown *unk, const GUID *grpid, DWORD cmdid, VARIANT *in, VARIANT *out) { IOleCommandTarget *cmdtrg; @@ -6395,6 +6411,7 @@ START_TEST(dom) run_domtest(elem_test2_str, test_elems2); run_domtest(doc_blank, test_create_elems); run_domtest(doc_blank, test_defaults); + run_domtest(doc_blank, test_null_write); run_domtest(indent_test_str, test_indent); run_domtest(cond_comment_str, test_cond_comment); run_domtest(frameset_str, test_frameset);