[PATCH 0/1] MR9410: urlmon: FindMimeFromData return only the mime type
From: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> --- dlls/urlmon/mimefilter.c | 27 +++++++++++++++++++++++---- dlls/urlmon/tests/misc.c | 5 +++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/dlls/urlmon/mimefilter.c b/dlls/urlmon/mimefilter.c index 793de18a853..40ca611ddb4 100644 --- a/dlls/urlmon/mimefilter.c +++ b/dlls/urlmon/mimefilter.c @@ -544,12 +544,21 @@ static HRESULT find_mime_from_buffer(const BYTE *buf, DWORD size, const WCHAR *p if(!proposed_mime) return E_FAIL; - len = lstrlenW(proposed_mime)+1; - *ret_mime = CoTaskMemAlloc(len*sizeof(WCHAR)); + len = lstrlenW(proposed_mime); + for(i = 0; i < len; i++) + { + if (proposed_mime[i] == ';') + { + len = i; + break; + } + } + *ret_mime = CoTaskMemAlloc((len+1)*sizeof(WCHAR)); if(!*ret_mime) return E_OUTOFMEMORY; memcpy(*ret_mime, proposed_mime, len*sizeof(WCHAR)); + ((WCHAR*)(*ret_mime))[len] = 0; return S_OK; } @@ -638,12 +647,22 @@ static HRESULT find_mime_from_buffer(const BYTE *buf, DWORD size, const WCHAR *p TRACE("found %s for %s\n", debugstr_w(ret), debugstr_an((const char*)buf, min(32, size))); - len = lstrlenW(ret)+1; - *ret_mime = CoTaskMemAlloc(len*sizeof(WCHAR)); + len = lstrlenW(ret); + for(i = 0; i < len; i++) + { + if (ret[i] == ';') + { + len = i; + break; + } + } + + *ret_mime = CoTaskMemAlloc((len+1)*sizeof(WCHAR)); if(!*ret_mime) return E_OUTOFMEMORY; memcpy(*ret_mime, ret, len*sizeof(WCHAR)); + ((WCHAR*)(*ret_mime))[len] = 0; return S_OK; } diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c index 0926eb75224..2a61b892930 100644 --- a/dlls/urlmon/tests/misc.c +++ b/dlls/urlmon/tests/misc.c @@ -794,6 +794,11 @@ static void test_FindMimeFromData(void) ok(!lstrcmpW(mime, L"text/plain"), "wrong mime: %s\n", wine_dbgstr_w(mime)); CoTaskMemFree(mime); + hres = pFindMimeFromData(NULL, L"winexml://content/brew=1", data1, 0, L"text/html; charset=unicode", 0, &mime, 0); + ok(hres == S_OK, "FindMimeFromData failed: %08lx\n", hres); + ok(!lstrcmpW(mime, L"text/html"), "wrong mime: %s\n", wine_dbgstr_w(mime)); + CoTaskMemFree(mime); + hres = pFindMimeFromData(NULL, NULL, data1, 0, L"text/plain", 0, NULL, 0); ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08lx, expected E_INVALIDARG\n", hres); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9410
participants (2)
-
Alistair Leslie-Hughes -
Alistair Leslie-Hughes (@alesliehughes)