Jacek Caban : mshtml: Make nsIURI::Resolve implementation IUri-based.
Module: wine Branch: master Commit: 2d0ec719622780269575a21e45d7ce89514f4d2d URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d0ec719622780269575a21e45... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Jan 3 23:48:29 2011 +0100 mshtml: Make nsIURI::Resolve implementation IUri-based. --- dlls/mshtml/nsio.c | 31 +++++++++++++++++++------------ 1 files changed, 19 insertions(+), 12 deletions(-) diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index e5cfa78..1a8c4fd 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -2048,36 +2048,43 @@ static nsresult NSAPI nsURI_Resolve(nsIURL *iface, const nsACString *aRelativePa nsACString *_retval) { nsWineURI *This = NSURI_THIS(iface); - WCHAR url[INTERNET_MAX_URL_LENGTH]; const char *patha; + IUri *new_uri; WCHAR *path; - char *urla; - DWORD len; + char *reta; + BSTR ret; HRESULT hres; TRACE("(%p)->(%s %p)\n", This, debugstr_nsacstr(aRelativePath), _retval); + if(!ensure_uri(This)) + return NS_ERROR_UNEXPECTED; + nsACString_GetData(aRelativePath, &patha); path = heap_strdupAtoW(patha); if(!path) return NS_ERROR_OUT_OF_MEMORY; - hres = CoInternetCombineUrl(This->wine_url, path, - URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO, - url, sizeof(url)/sizeof(WCHAR), &len, 0); + hres = CoInternetCombineUrlEx(This->uri, path, URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO, &new_uri, 0); heap_free(path); if(FAILED(hres)) { - ERR("CoIntenetCombineUrl failed: %08x\n", hres); + ERR("CoIntenetCombineUrlEx failed: %08x\n", hres); return NS_ERROR_FAILURE; } - urla = heap_strdupWtoA(url); - if(!urla) + hres = IUri_GetDisplayUri(new_uri, &ret); + IUri_Release(new_uri); + if(FAILED(hres)) + return NS_ERROR_FAILURE; + + reta = heap_strdupWtoA(ret); + SysFreeString(ret); + if(!reta) return NS_ERROR_OUT_OF_MEMORY; - TRACE("returning %s\n", debugstr_a(urla)); - nsACString_SetData(_retval, urla); - heap_free(urla); + TRACE("returning %s\n", debugstr_a(reta)); + nsACString_SetData(_retval, reta); + heap_free(reta); return NS_OK; }
participants (1)
-
Alexandre Julliard