Module: wine Branch: master Commit: 2d0ec719622780269575a21e45d7ce89514f4d2d URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d0ec719622780269575a21e45...
Author: Jacek Caban jacek@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; }