Commit 5541b7d1 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

mshtml: Abort more request in abort_document_bindings.

parent 73c4fbcc
...@@ -300,6 +300,7 @@ static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface) ...@@ -300,6 +300,7 @@ static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface)
if(This->binding) if(This->binding)
IBinding_Release(This->binding); IBinding_Release(This->binding);
list_remove(&This->entry); list_remove(&This->entry);
list_init(&This->entry);
heap_free(This->headers); heap_free(This->headers);
This->vtbl->destroy(This); This->vtbl->destroy(This);
...@@ -367,6 +368,7 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *ifac ...@@ -367,6 +368,7 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *ifac
} }
list_remove(&This->entry); list_remove(&This->entry);
list_init(&This->entry);
This->doc = NULL; This->doc = NULL;
return hres; return hres;
...@@ -1088,6 +1090,8 @@ static void stop_request_proc(task_t *_task) ...@@ -1088,6 +1090,8 @@ static void stop_request_proc(task_t *_task)
TRACE("(%p)\n", task->bsc); TRACE("(%p)\n", task->bsc);
list_remove(&task->bsc->bsc.entry);
list_init(&task->bsc->bsc.entry);
on_stop_nsrequest(task->bsc, S_OK); on_stop_nsrequest(task->bsc, S_OK);
IBindStatusCallback_Release(&task->bsc->bsc.IBindStatusCallback_iface); IBindStatusCallback_Release(&task->bsc->bsc.IBindStatusCallback_iface);
} }
...@@ -1326,13 +1330,21 @@ HRESULT async_start_doc_binding(HTMLWindow *window, nsChannelBSC *bscallback) ...@@ -1326,13 +1330,21 @@ HRESULT async_start_doc_binding(HTMLWindow *window, nsChannelBSC *bscallback)
void abort_document_bindings(HTMLDocumentNode *doc) void abort_document_bindings(HTMLDocumentNode *doc)
{ {
BSCallback *iter; BSCallback *iter, *next;
LIST_FOR_EACH_ENTRY_SAFE(iter, next, &doc->bindings, BSCallback, entry) {
if(iter->doc)
remove_target_tasks(iter->doc->basedoc.task_magic);
LIST_FOR_EACH_ENTRY(iter, &doc->bindings, BSCallback, entry) {
if(iter->binding) if(iter->binding)
IBinding_Abort(iter->binding); IBinding_Abort(iter->binding);
iter->doc = NULL; else {
list_remove(&iter->entry); list_remove(&iter->entry);
list_init(&iter->entry);
iter->vtbl->stop_binding(iter, S_OK);
}
iter->doc = NULL;
} }
} }
...@@ -1349,6 +1361,7 @@ HRESULT channelbsc_load_stream(nsChannelBSC *bscallback, IStream *stream) ...@@ -1349,6 +1361,7 @@ HRESULT channelbsc_load_stream(nsChannelBSC *bscallback, IStream *stream)
if(!bscallback->nschannel->content_type) if(!bscallback->nschannel->content_type)
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
list_add_head(&bscallback->bsc.doc->bindings, &bscallback->bsc.entry);
if(stream) if(stream)
hres = read_stream_data(bscallback, stream); hres = read_stream_data(bscallback, stream);
if(SUCCEEDED(hres)) if(SUCCEEDED(hres))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment