Commit 5674260b authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

urlmon: Use CoInternetParseUrl in URLMonikerImpl_Construct.

parent f114ba11
...@@ -1060,42 +1060,33 @@ static const IMonikerVtbl VT_URLMonikerImpl = ...@@ -1060,42 +1060,33 @@ static const IMonikerVtbl VT_URLMonikerImpl =
static HRESULT URLMonikerImpl_Construct(URLMonikerImpl* This, LPCOLESTR lpszLeftURLName, LPCOLESTR lpszURLName) static HRESULT URLMonikerImpl_Construct(URLMonikerImpl* This, LPCOLESTR lpszLeftURLName, LPCOLESTR lpszURLName)
{ {
HRESULT hres; HRESULT hres;
DWORD sizeStr = INTERNET_MAX_URL_LENGTH; DWORD sizeStr = 0;
TRACE("(%p,%s,%s)\n",This,debugstr_w(lpszLeftURLName),debugstr_w(lpszURLName)); TRACE("(%p,%s,%s)\n",This,debugstr_w(lpszLeftURLName),debugstr_w(lpszURLName));
This->lpvtbl = &VT_URLMonikerImpl; This->lpvtbl = &VT_URLMonikerImpl;
This->ref = 0; This->ref = 0;
sizeStr = lstrlenW(lpszURLName)+1; This->URLName = HeapAlloc(GetProcessHeap(), 0, INTERNET_MAX_URL_LENGTH*sizeof(WCHAR));
if(lpszLeftURLName)
sizeStr += strlenW(lpszLeftURLName)+32;
This->URLName = HeapAlloc(GetProcessHeap(), 0, sizeStr*sizeof(WCHAR));
if(lpszLeftURLName) { if(lpszLeftURLName)
hres = CoInternetCombineUrl(lpszLeftURLName, lpszURLName, URL_FILE_USE_PATHURL, hres = CoInternetCombineUrl(lpszLeftURLName, lpszURLName, URL_FILE_USE_PATHURL,
This->URLName, sizeStr, &sizeStr, 0); This->URLName, INTERNET_MAX_URL_LENGTH, &sizeStr, 0);
else
hres = CoInternetParseUrl(lpszURLName, PARSE_CANONICALIZE, URL_FILE_USE_PATHURL,
This->URLName, INTERNET_MAX_URL_LENGTH, &sizeStr, 0);
if(FAILED(hres)) { if(FAILED(hres)) {
HeapFree(GetProcessHeap(), 0, This->URLName); HeapFree(GetProcessHeap(), 0, This->URLName);
return hres; return hres;
} }
}else {
/* FIXME:
* We probably should use CoInternetParseUrl or something similar here.
*/
static const WCHAR wszFile[] = {'f','i','l','e',':','/','/',}; URLMON_LockModule();
/* file protocol is a special case */ if(sizeStr != INTERNET_MAX_URL_LENGTH)
if(sizeStr > sizeof(wszFile)/sizeof(WCHAR) This->URLName = HeapReAlloc(GetProcessHeap(), 0, This->URLName, (sizeStr+1)*sizeof(WCHAR));
&& !memcmp(lpszURLName, wszFile, sizeof(wszFile)))
UrlCanonicalizeW(lpszURLName, This->URLName, &sizeStr, URL_FILE_USE_PATHURL);
else
strcpyW(This->URLName,lpszURLName);
}
URLMON_LockModule(); TRACE("URLName = %s\n", debugstr_w(This->URLName));
return S_OK; return S_OK;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment