From f792ada40fcbb755f09f3497277fa11adcf79233 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sun, 23 Mar 2008 02:15:20 +0100 Subject: [PATCH] mshtml: Don't access BSCallback directly in nsio.c. --- dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/navigate.c | 14 ++++++++++++++ dlls/mshtml/nsio.c | 22 ++-------------------- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index d26250efdba..66bb11d241f 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -434,6 +434,8 @@ HRESULT load_stream(BSCallback*,IStream*); void set_document_bscallback(HTMLDocument*,BSCallback*); void set_current_mon(HTMLDocument*,IMoniker*); +void channelbsc_set_channel(BSCallback*,nsChannel*,nsIStreamListener*,nsISupports*); + IHTMLSelectionObject *HTMLSelectionObject_Create(HTMLDocument*,nsISelection*); IHTMLTxtRange *HTMLTxtRange_Create(HTMLDocument*,nsIDOMRange*); IHTMLStyle *HTMLStyle_Create(nsIDOMCSSStyleDeclaration*); diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index cc48b9330bd..66cea253113 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -908,3 +908,17 @@ HRESULT load_stream(BSCallback *bscallback, IStream *stream) return hres; } + +void channelbsc_set_channel(BSCallback *This, nsChannel *channel, nsIStreamListener *listener, nsISupports *context) +{ + nsIChannel_AddRef(NSCHANNEL(channel)); + This->nschannel = channel; + + nsIStreamListener_AddRef(listener); + This->nslistener = listener; + + if(context) { + nsISupports_AddRef(context); + This->nscontext = context; + } +} diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index d55546dfca0..8c996b8e06a 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -685,16 +685,7 @@ static nsresult async_open_doc_uri(nsChannel *This, NSContainer *container, *open = FALSE; if(container->bscallback) { - nsIChannel_AddRef(NSCHANNEL(This)); - container->bscallback->nschannel = This; - - nsIStreamListener_AddRef(listener); - container->bscallback->nslistener = listener; - - if(context) { - nsISupports_AddRef(context); - container->bscallback->nscontext = context; - } + channelbsc_set_channel(container->bscallback, This, listener, context); if(container->doc && container->doc->mime) { DWORD len; @@ -781,16 +772,7 @@ static nsresult async_open(nsChannel *This, NSContainer *container, nsIStreamLis bscallback = create_bscallback(mon); IMoniker_Release(mon); - nsIChannel_AddRef(NSCHANNEL(This)); - bscallback->nschannel = This; - - nsIStreamListener_AddRef(listener); - bscallback->nslistener = listener; - - if(context) { - nsISupports_AddRef(context); - bscallback->nscontext = context; - } + channelbsc_set_channel(bscallback, This, listener, context); task = heap_alloc(sizeof(task_t));