diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c index affcdfadfbc..03ddefc4c4f 100644 --- a/dlls/urlmon/umon.c +++ b/dlls/urlmon/umon.c @@ -1065,29 +1065,19 @@ static HRESULT URLMonikerImpl_Construct(URLMonikerImpl* This, LPCOLESTR lpszLeft DWORD sizeStr = INTERNET_MAX_URL_LENGTH; TRACE("(%p,%s,%s)\n",This,debugstr_w(lpszLeftURLName),debugstr_w(lpszURLName)); - memset(This, 0, sizeof(*This)); - /* Initialize the virtual function table. */ This->lpvtbl = &VT_URLMonikerImpl; This->ref = 0; - if(lpszLeftURLName) { - hres = UrlCombineW(lpszLeftURLName, lpszURLName, NULL, &sizeStr, 0); - if(FAILED(hres)) { - return hres; - } - sizeStr++; - } - else - sizeStr = lstrlenW(lpszURLName)+1; + sizeStr = lstrlenW(lpszURLName)+1; + if(lpszLeftURLName) + sizeStr += strlenW(lpszLeftURLName)+32; - This->URLName=HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*(sizeStr)); - - if (This->URLName==NULL) - return E_OUTOFMEMORY; + This->URLName = HeapAlloc(GetProcessHeap(), 0, sizeStr*sizeof(WCHAR)); if(lpszLeftURLName) { - hres = UrlCombineW(lpszLeftURLName, lpszURLName, This->URLName, &sizeStr, 0); + hres = CoInternetCombineUrl(lpszLeftURLName, lpszURLName, 0, This->URLName, sizeStr, + &sizeStr, 0); if(FAILED(hres)) { HeapFree(GetProcessHeap(), 0, This->URLName); return hres;