Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/mfplat/main.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c index 7fd713261fc..5bd19190ed5 100644 --- a/dlls/mfplat/main.c +++ b/dlls/mfplat/main.c @@ -5946,9 +5946,9 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA { static const char streamhandlerspath[] = "Software\Microsoft\Windows Media Foundation\ByteStreamHandlers"; static const HKEY hkey_roots[2] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE }; + WCHAR *mimeW = NULL, *urlW = NULL; IMFAttributes *attributes; const WCHAR *url_ext; - WCHAR *mimeW = NULL; HRESULT hr = E_FAIL; unsigned int i, j; UINT32 length; @@ -5959,6 +5959,11 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA if (SUCCEEDED(IMFByteStream_QueryInterface(stream, &IID_IMFAttributes, (void **)&attributes))) { IMFAttributes_GetAllocatedString(attributes, &MF_BYTESTREAM_CONTENT_TYPE, &mimeW, &length); + if (!url) + { + IMFAttributes_GetAllocatedString(attributes, &MF_BYTESTREAM_ORIGIN_NAME, &urlW, &length); + url = urlW; + } IMFAttributes_Release(attributes); }
@@ -5967,7 +5972,7 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA
if (!url_ext && !mimeW) { - CoTaskMemFree(mimeW); + CoTaskMemFree(urlW); return MF_E_UNSUPPORTED_BYTESTREAM_TYPE; }
@@ -5991,7 +5996,11 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA LeaveCriticalSection(&local_handlers_section);
if (*handler) + { + CoTaskMemFree(mimeW); + CoTaskMemFree(urlW); return hr; + } }
for (i = 0, hr = E_FAIL; i < ARRAY_SIZE(hkey_roots); ++i) @@ -6030,6 +6039,7 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA }
CoTaskMemFree(mimeW); + CoTaskMemFree(urlW); return hr; }
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/mfplat/main.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c index 5bd19190ed5..37a66798b2f 100644 --- a/dlls/mfplat/main.c +++ b/dlls/mfplat/main.c @@ -5944,7 +5944,6 @@ static HRESULT resolver_create_registered_handler(HKEY hkey, REFIID riid, void * static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHAR *url, DWORD flags, IMFByteStreamHandler **handler) { - static const char streamhandlerspath[] = "Software\Microsoft\Windows Media Foundation\ByteStreamHandlers"; static const HKEY hkey_roots[2] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE }; WCHAR *mimeW = NULL, *urlW = NULL; IMFAttributes *attributes; @@ -6008,7 +6007,7 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA const WCHAR *namesW[2] = { mimeW, url_ext }; HKEY hkey, hkey_handler;
- if (RegOpenKeyA(hkey_roots[i], streamhandlerspath, &hkey)) + if (RegOpenKeyW(hkey_roots[i], L"Software\Microsoft\Windows Media Foundation\ByteStreamHandlers", &hkey)) continue;
for (j = 0; j < ARRAY_SIZE(namesW); ++j) @@ -6045,7 +6044,6 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA
static HRESULT resolver_create_scheme_handler(const WCHAR *scheme, DWORD flags, IMFSchemeHandler **handler) { - static const char schemehandlerspath[] = "Software\Microsoft\Windows Media Foundation\SchemeHandlers"; static const HKEY hkey_roots[2] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE }; HRESULT hr = MF_E_UNSUPPORTED_SCHEME; unsigned int i; @@ -6082,7 +6080,7 @@ static HRESULT resolver_create_scheme_handler(const WCHAR *scheme, DWORD flags,
hr = MF_E_UNSUPPORTED_SCHEME;
- if (RegOpenKeyA(hkey_roots[i], schemehandlerspath, &hkey)) + if (RegOpenKeyW(hkey_roots[i], L"Software\Microsoft\Windows Media Foundation\SchemeHandlers", &hkey)) continue;
if (!RegOpenKeyW(hkey, scheme, &hkey_handler))
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=100607
Your paranoid android.
=== debiant2 (32 bit Chinese:China report) ===
mfplat: mfplat.c:3070: Test failed: Unexpected counter value 0. Unhandled exception: page fault on read access to 0x00000010 in 32-bit code (0x66742325).