Jacek Caban : mshtml: Don't use wine_uri in nsIIOService:: NewChannelFromURI implementation.

Alexandre Julliard julliard at winehq.org
Thu Nov 25 11:18:56 CST 2010


Module: wine
Branch: master
Commit: 286249031c1b0ac6081b573759772cd415696bbc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=286249031c1b0ac6081b573759772cd415696bbc

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Nov 25 13:56:03 2010 +0100

mshtml: Don't use wine_uri in nsIIOService::NewChannelFromURI implementation.

---

 dlls/mshtml/nsio.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 01da4ac..13085e6 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -2829,10 +2829,10 @@ static nsresult NSAPI nsIOService_NewFileURI(nsIIOService *iface, nsIFile *aFile
 static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI *aURI,
                                                      nsIChannel **_retval)
 {
-    PARSEDURLW parsed_url = {sizeof(PARSEDURLW)};
     nsChannel *ret;
     nsWineURI *wine_uri;
     nsresult nsres;
+    HRESULT hres;
 
     TRACE("(%p %p)\n", aURI, _retval);
 
@@ -2842,6 +2842,11 @@ static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI
         return nsIIOService_NewChannelFromURI(nsio, aURI, _retval);
     }
 
+    if(!ensure_uri(wine_uri)) {
+        nsIURI_Release(NSURI(wine_uri));
+        return NS_ERROR_UNEXPECTED;
+    }
+
     ret = heap_alloc_zero(sizeof(nsChannel));
 
     ret->lpHttpChannelVtbl = &nsChannelVtbl;
@@ -2855,8 +2860,10 @@ static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI
 
     nsIURI_AddRef(aURI);
     ret->original_uri = aURI;
-    ret->url_scheme = wine_uri->wine_url && SUCCEEDED(ParseURLW(wine_uri->wine_url, &parsed_url))
-        ? parsed_url.nScheme : URL_SCHEME_UNKNOWN;
+
+    hres = IUri_GetScheme(wine_uri->uri, &ret->url_scheme);
+    if(FAILED(hres))
+        ret->url_scheme = URL_SCHEME_UNKNOWN;
 
     *_retval = NSCHANNEL(ret);
     return NS_OK;




More information about the wine-cvs mailing list