diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 0d42d4f5465..6842b231c15 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -2019,7 +2019,7 @@ HRESULT create_doc_from_nsdoc(nsIDOMHTMLDocument *nsdoc, HTMLDocumentObj *doc_ob
if(!doc)
return E_OUTOFMEMORY;
- if(window == doc_obj->basedoc.window)
+ if(!doc_obj->basedoc.window || window == doc_obj->basedoc.window)
doc->basedoc.cp_container.forward_container = &doc_obj->basedoc.cp_container;
nsIDOMHTMLDocument_AddRef(nsdoc);
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index a4fa1be09b0..99d03b3360d 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -2247,7 +2247,6 @@ HRESULT HTMLWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow, HTML
list_init(&window->script_hosts);
window->task_magic = get_task_target_magic();
- *ret = window;
update_window_doc(window);
list_init(&window->children);
@@ -2260,6 +2259,7 @@ HRESULT HTMLWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow, HTML
list_add_tail(&parent->children, &window->sibling_entry);
}
+ *ret = window;
return S_OK;
}