mshtml: Accept NULL SAFEARRAY pointers in IHTMLDocument2::write(ln).
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 538a02f..f99ab29 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -776,6 +776,9 @@
         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 c0128a6..7fd9262 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -5921,6 +5921,22 @@
     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 @@
     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);