From: Conor McCarthy <cmccarthy@codeweavers.com> --- dlls/mfplat/main.c | 6 ++++++ dlls/mfplat/tests/mfplat.c | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c index da9dce416ba..8e36a9f7e8a 100644 --- a/dlls/mfplat/main.c +++ b/dlls/mfplat/main.c @@ -6596,6 +6596,12 @@ static HRESULT WINAPI source_resolver_CreateObjectFromURL(IMFSourceResolver *ifa data = (RTWQASYNCRESULT *)result; data->hEvent = CreateEventW(NULL, FALSE, FALSE, NULL); + /* Native allows leading slashes in file paths. BeginCreateObject() does not accept them. + * TODO: the correct way to handle this may be to prepend "file://" to the url. + * Ultimately it should probably be converted in the handler using MFCreatePathFromURL(). */ + while (*url == L'/') + ++url; + hr = IMFSchemeHandler_BeginCreateObject(handler, url, flags, props, NULL, (IMFAsyncCallback *)&resolver->url_callback, (IUnknown *)result); if (FAILED(hr)) diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index b3eafd03112..b3e7dca3534 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -1349,10 +1349,8 @@ static void test_source_resolver(void) lstrcatW(pathW, filename); hr = IMFSourceResolver_CreateObjectFromURL(resolver, pathW, MF_RESOLUTION_BYTESTREAM, NULL, &obj_type, (IUnknown **)&stream); - todo_wine ok(hr == S_OK, "Failed to resolve url, hr %#lx.\n", hr); - if (SUCCEEDED(hr)) - IMFByteStream_Release(stream); + IMFByteStream_Release(stream); } /* With explicit scheme. */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10708