mshtml: Don't access BSCallback directly in nsembed.c.

This commit is contained in:
Jacek Caban 2008-03-23 02:15:39 +01:00 committed by Alexandre Julliard
parent f792ada40f
commit 979b42d749
3 changed files with 23 additions and 9 deletions

View File

@ -435,6 +435,7 @@ void set_document_bscallback(HTMLDocument*,BSCallback*);
void set_current_mon(HTMLDocument*,IMoniker*); void set_current_mon(HTMLDocument*,IMoniker*);
void channelbsc_set_channel(BSCallback*,nsChannel*,nsIStreamListener*,nsISupports*); void channelbsc_set_channel(BSCallback*,nsChannel*,nsIStreamListener*,nsISupports*);
IMoniker *get_channelbsc_mon(BSCallback*);
IHTMLSelectionObject *HTMLSelectionObject_Create(HTMLDocument*,nsISelection*); IHTMLSelectionObject *HTMLSelectionObject_Create(HTMLDocument*,nsISelection*);
IHTMLTxtRange *HTMLTxtRange_Create(HTMLDocument*,nsIDOMRange*); IHTMLTxtRange *HTMLTxtRange_Create(HTMLDocument*,nsIDOMRange*);

View File

@ -866,6 +866,13 @@ HRESULT start_binding(HTMLDocument *doc, BSCallback *bscallback, IBindCtx *bctx)
return S_OK; return S_OK;
} }
IMoniker *get_channelbsc_mon(BSCallback *This)
{
if(This->mon)
IMoniker_AddRef(This->mon);
return This->mon;
}
void set_document_bscallback(HTMLDocument *doc, BSCallback *callback) void set_document_bscallback(HTMLDocument *doc, BSCallback *callback)
{ {
BSCallback *iter; BSCallback *iter;

View File

@ -1138,16 +1138,22 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener
nsIWineURI_SetNSContainer(wine_uri, This); nsIWineURI_SetNSContainer(wine_uri, This);
nsIWineURI_SetIsDocumentURI(wine_uri, TRUE); nsIWineURI_SetIsDocumentURI(wine_uri, TRUE);
if(This->bscallback && This->bscallback->mon) { if(This->bscallback) {
LPWSTR wine_url; IMoniker *mon = get_channelbsc_mon(This->bscallback);
HRESULT hres;
hres = IMoniker_GetDisplayName(This->bscallback->mon, NULL, 0, &wine_url); if(mon) {
if(SUCCEEDED(hres)) { LPWSTR wine_url;
nsIWineURI_SetWineURL(wine_uri, wine_url); HRESULT hres;
CoTaskMemFree(wine_url);
}else { hres = IMoniker_GetDisplayName(mon, NULL, 0, &wine_url);
WARN("GetDisplayName failed: %08x\n", hres); if(SUCCEEDED(hres)) {
nsIWineURI_SetWineURL(wine_uri, wine_url);
CoTaskMemFree(wine_url);
}else {
WARN("GetDisplayName failed: %08x\n", hres);
}
IMoniker_Release(mon);
} }
} }