Jacek Caban : mshtml: Make sure we always create nsWineURI with valid IUri.
Alexandre Julliard
julliard at winehq.org
Mon Jun 27 17:41:18 CDT 2011
Module: wine
Branch: master
Commit: 69f4a1bf7653f0f604ef23faba088850ea36cfdf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=69f4a1bf7653f0f604ef23faba088850ea36cfdf
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sat Jun 25 19:03:19 2011 +0200
mshtml: Make sure we always create nsWineURI with valid IUri.
---
dlls/mshtml/nsio.c | 41 +++++++++++++++++++++++++----------------
1 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index b47a643..3222522 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -95,7 +95,7 @@ static BOOL ensure_uri(nsWineURI *This)
return TRUE;
}
-static nsresult create_uri(nsIURI*,HTMLWindow*,NSContainer*,nsWineURI**);
+static nsresult create_nsuri(IUri*,nsIURI*,HTMLWindow*,NSContainer*,nsWineURI**);
static const char *debugstr_nsacstr(const nsACString *nsstr)
{
@@ -2111,14 +2111,12 @@ static nsresult NSAPI nsURI_Clone(nsIURL *iface, nsIURI **_retval)
}
}
- nsres = create_uri(nsuri, This->window_ref ? This->window_ref->window : NULL, This->container, &wine_uri);
+ nsres = create_nsuri(This->uri, nsuri, This->window_ref ? This->window_ref->window : NULL, This->container, &wine_uri);
if(NS_FAILED(nsres)) {
- WARN("create_uri failed: %08x\n", nsres);
+ WARN("create_nsuri failed: %08x\n", nsres);
return nsres;
}
- wine_uri->uri = This->uri;
- IUri_AddRef(wine_uri->uri);
sync_wine_url(wine_uri);
*_retval = (nsIURI*)&wine_uri->nsIURL_iface;
@@ -2515,7 +2513,7 @@ static const nsIURLVtbl nsURLVtbl = {
nsURL_GetRelativeSpec
};
-static nsresult create_uri(nsIURI *nsuri, HTMLWindow *window, NSContainer *container, nsWineURI **_retval)
+static nsresult create_nsuri(IUri *iuri, nsIURI *nsuri, HTMLWindow *window, NSContainer *container, nsWineURI **_retval)
{
nsWineURI *ret = heap_alloc_zero(sizeof(nsWineURI));
@@ -2526,6 +2524,9 @@ static nsresult create_uri(nsIURI *nsuri, HTMLWindow *window, NSContainer *conta
set_uri_nscontainer(ret, container);
set_uri_window(ret, window);
+ IUri_AddRef(iuri);
+ ret->uri = iuri;
+
if(nsuri)
nsIURI_QueryInterface(nsuri, &IID_nsIURL, (void**)&ret->nsurl);
@@ -2537,9 +2538,16 @@ static nsresult create_uri(nsIURI *nsuri, HTMLWindow *window, NSContainer *conta
HRESULT create_doc_uri(HTMLWindow *window, WCHAR *url, nsWineURI **ret)
{
nsWineURI *uri;
+ IUri *iuri;
nsresult nsres;
+ HRESULT hres;
+
+ hres = CreateUri(url, 0, 0, &iuri);
+ if(FAILED(hres))
+ return hres;
- nsres = create_uri(NULL, window, window->doc_obj->nscontainer, &uri);
+ nsres = create_nsuri(iuri, NULL, window, window->doc_obj->nscontainer, &uri);
+ IUri_Release(iuri);
if(NS_FAILED(nsres))
return E_FAIL;
@@ -2586,22 +2594,24 @@ HRESULT create_redirect_nschannel(const WCHAR *url, nsChannel *orig_channel, nsC
HTMLWindow *window = NULL;
nsChannel *channel;
nsWineURI *uri;
+ IUri *iuri;
nsresult nsres;
HRESULT hres;
+ hres = CreateUri(url, 0, 0, &iuri);
+ if(FAILED(hres))
+ return hres;
+
if(orig_channel->uri->window_ref)
window = orig_channel->uri->window_ref->window;
- nsres = create_uri(NULL, window, NULL, &uri);
+ nsres = create_nsuri(iuri, NULL, window, NULL, &uri);
+ IUri_Release(iuri);
if(NS_FAILED(nsres))
return E_FAIL;
- hres = CreateUri(url, 0, 0, &uri->uri);
- if(SUCCEEDED(hres))
- nsres = create_nschannel(uri, &channel);
sync_wine_url(uri);
+ nsres = create_nschannel(uri, &channel);
nsIURL_Release(&uri->nsIURL_iface);
- if(FAILED(hres))
- return hres;
if(NS_FAILED(nsres))
return E_FAIL;
@@ -2918,14 +2928,13 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
return nsres;
}
- nsres = create_uri(uri, window, NULL, &wine_uri);
+ nsres = create_nsuri(urlmon_uri, uri, window, NULL, &wine_uri);
+ IUri_Release(urlmon_uri);
if(base_wine_uri)
nsIURI_Release(&base_wine_uri->nsIURL_iface);
if(NS_FAILED(nsres))
return nsres;
- wine_uri->uri = urlmon_uri;
-
sync_wine_url(wine_uri);
*_retval = (nsIURI*)wine_uri;
return nsres;
More information about the wine-cvs
mailing list