Signed-off-by: Michael Stefaniuc mstefani@winehq.org --- dlls/inetcomm/mimeole.c | 8 +++----- dlls/inetcomm/protocol.c | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c index eda9a911bbf..74c5c670d15 100644 --- a/dlls/inetcomm/mimeole.c +++ b/dlls/inetcomm/mimeole.c @@ -3697,8 +3697,6 @@ HRESULT WINAPI MimeOleObjectFromMoniker(BINDF bindf, IMoniker *moniker, IBindCtx size_t len; HRESULT hres;
- static const WCHAR mhtml_prefixW[] = {'m','h','t','m','l',':'}; - WARN("(0x%08x, %p, %p, %s, %p, %p) semi-stub\n", bindf, moniker, binding, debugstr_guid(riid), out, moniker_new);
if(!IsEqualGUID(&IID_IUnknown, riid)) { @@ -3713,12 +3711,12 @@ HRESULT WINAPI MimeOleObjectFromMoniker(BINDF bindf, IMoniker *moniker, IBindCtx TRACE("display name %s\n", debugstr_w(display_name));
len = lstrlenW(display_name); - mhtml_url = heap_alloc((len+1)*sizeof(WCHAR) + sizeof(mhtml_prefixW)); + mhtml_url = heap_alloc(len*sizeof(WCHAR) + sizeof(L"mhtml:")); if(!mhtml_url) return E_OUTOFMEMORY;
- memcpy(mhtml_url, mhtml_prefixW, sizeof(mhtml_prefixW)); - lstrcpyW(mhtml_url + ARRAY_SIZE(mhtml_prefixW), display_name); + lstrcpyW(mhtml_url, L"mhtml:"); + lstrcatW(mhtml_url, display_name); HeapFree(GetProcessHeap(), 0, display_name);
hres = CreateURLMoniker(NULL, mhtml_url, moniker_new); diff --git a/dlls/inetcomm/protocol.c b/dlls/inetcomm/protocol.c index e50e5a625c3..2751012e0e6 100644 --- a/dlls/inetcomm/protocol.c +++ b/dlls/inetcomm/protocol.c @@ -59,8 +59,8 @@ typedef struct { WCHAR url[1]; } MimeHtmlBinding;
-static const WCHAR mhtml_prefixW[] = {'m','h','t','m','l',':'}; -static const WCHAR mhtml_separatorW[] = {'!','x','-','u','s','c',':'}; +static const WCHAR mhtml_prefixW[] = L"mhtml:"; +static const WCHAR mhtml_separatorW[] = L"!x-usc:";
static inline LPWSTR heap_strdupW(LPCWSTR str) { @@ -82,16 +82,16 @@ static HRESULT parse_mhtml_url(const WCHAR *url, mhtml_url_t *r) { const WCHAR *p;
- if(wcsnicmp(url, mhtml_prefixW, ARRAY_SIZE(mhtml_prefixW))) + if(wcsnicmp(url, mhtml_prefixW, lstrlenW(mhtml_prefixW))) return E_FAIL;
- r->mhtml = url + ARRAY_SIZE(mhtml_prefixW); + r->mhtml = url + lstrlenW(mhtml_prefixW); p = wcschr(r->mhtml, '!'); if(p) { r->mhtml_len = p - r->mhtml; /* FIXME: We handle '!' and '!x-usc:' in URLs as the same thing. Those should not be the same. */ - if(!wcsncmp(p, mhtml_separatorW, ARRAY_SIZE(mhtml_separatorW))) - p += ARRAY_SIZE(mhtml_separatorW); + if(!wcsncmp(p, mhtml_separatorW, lstrlenW(mhtml_separatorW))) + p += lstrlenW(mhtml_separatorW); else p++; }else { @@ -656,7 +656,7 @@ static HRESULT WINAPI MimeHtmlProtocolInfo_CombineUrl(IInternetProtocolInfo *ifa DWORD cchResult, DWORD* pcchResult, DWORD dwReserved) { MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); - size_t len = ARRAY_SIZE(mhtml_prefixW); + size_t len = lstrlenW(mhtml_prefixW); mhtml_url_t url; WCHAR *p; HRESULT hres; @@ -669,26 +669,26 @@ static HRESULT WINAPI MimeHtmlProtocolInfo_CombineUrl(IInternetProtocolInfo *ifa if(FAILED(hres)) return hres;
- if(!wcsnicmp(pwzRelativeUrl, mhtml_prefixW, ARRAY_SIZE(mhtml_prefixW))) { + if(!wcsnicmp(pwzRelativeUrl, mhtml_prefixW, len)) { FIXME("Relative URL is mhtml protocol\n"); return INET_E_USE_DEFAULT_PROTOCOLHANDLER; }
len += url.mhtml_len; if(*pwzRelativeUrl) - len += lstrlenW(pwzRelativeUrl) + ARRAY_SIZE(mhtml_separatorW); + len += lstrlenW(pwzRelativeUrl) + lstrlenW(mhtml_separatorW); if(len >= cchResult) { *pcchResult = 0; return E_FAIL; }
- memcpy(pwzResult, mhtml_prefixW, sizeof(mhtml_prefixW)); - p = pwzResult + ARRAY_SIZE(mhtml_prefixW); + lstrcpyW(pwzResult, mhtml_prefixW); + p = pwzResult + lstrlenW(mhtml_prefixW); memcpy(p, url.mhtml, url.mhtml_len*sizeof(WCHAR)); p += url.mhtml_len; if(*pwzRelativeUrl) { - memcpy(p, mhtml_separatorW, sizeof(mhtml_separatorW)); - p += ARRAY_SIZE(mhtml_separatorW); + lstrcpyW(p, mhtml_separatorW); + p += lstrlenW(mhtml_separatorW); lstrcpyW(p, pwzRelativeUrl); }else { *p = 0;