diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 83bae7f7b05..7223a7e13a9 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -112,7 +112,7 @@ struct NSContainer { HWND hwnd; - BOOL load_call; /* hack */ + BSCallback *bscallback; /* hack */ }; struct BSCallback { diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 907b0f58024..d12326b1be3 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -1153,7 +1153,7 @@ NSContainer *NSContainer_Create(HTMLDocument *doc, NSContainer *parent) ret->doc = doc; ret->ref = 1; - ret->load_call = FALSE; + ret->bscallback = NULL; if(parent) nsIWebBrowserChrome_AddRef(NSWBCHROME(parent)); diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index f0344e8dfff..561a750e9da 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -589,7 +589,7 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen return NS_ERROR_UNEXPECTED; } - if(container->load_call) { + if(container->bscallback) { nsIWebBrowserChrome_Release(NSWBCHROME(container)); }else { BOOL cont = before_async_open(This, container); diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index a663fe921ac..55462ad61b8 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -154,6 +154,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva IMoniker *pimkName, LPBC pibc, DWORD grfMode) { HTMLDocument *This = PERSISTMON_THIS(iface); + BSCallback *bscallback; LPOLESTR url; HRESULT hres; nsresult nsres; @@ -214,24 +215,27 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva } } + bscallback = create_bscallback(This, url); + if(This->nscontainer) { nsIInputStream *post_data_stream = get_post_data_stream(pibc); - This->nscontainer->load_call = TRUE; + This->nscontainer->bscallback = bscallback; nsres = nsIWebNavigation_LoadURI(This->nscontainer->navigation, url, LOAD_FLAGS_NONE, NULL, post_data_stream, NULL); - This->nscontainer->load_call = FALSE; + This->nscontainer->bscallback = NULL; if(post_data_stream) nsIInputStream_Release(post_data_stream); if(NS_SUCCEEDED(nsres)) { + IBindStatusCallback_Release(STATUSCLB(bscallback)); CoTaskMemFree(url); return S_OK; }else { WARN("LoadURI failed: %08lx\n", nsres); } - } + } /* FIXME: Use grfMode */ @@ -240,6 +244,9 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva if(pibc) FIXME("not supported pibc\n"); + IBindStatusCallback_Release(STATUSCLB(bscallback)); + CoTaskMemFree(url); + return S_OK; }