Nikolay Sivov : mfplat: Consider MF_BYTESTREAM_ORIGIN_NAME when looking for bytestream handler.

Alexandre Julliard julliard at winehq.org
Fri Oct 22 14:46:10 CDT 2021


Module: wine
Branch: master
Commit: 030008f6cc2907a140588244f767e8b4c6b121a3
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=030008f6cc2907a140588244f767e8b4c6b121a3

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Oct 22 08:24:21 2021 +0300

mfplat: Consider MF_BYTESTREAM_ORIGIN_NAME when looking for bytestream handler.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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;
 }
 




More information about the wine-cvs mailing list