Nikolay Sivov (@nsivov) commented about dlls/mfplat/main.c:
+static WCHAR *resolver_normalise_url(const WCHAR *url) +{ + static const WCHAR filescheme[] = L"file:", filescheme_dblslash[] = L"file://"; + unsigned int len = 0, slash_count; + WCHAR *normalised_url; + const WCHAR *scheme; + + if (resolver_find_scheme(url, &len)) + return wcsdup(url); + + /* If not found try "file:" + * Native allows leading slashes in file paths. If "file:" is missing, native prepends + * it before calling BeginCreateObject(), and includes two or three slashes if any were + * present. The rules don't seem to follow much of a pattern, and may have been designed + * to get the desired result from PathCreateFromUrlW(). */ + while (url[len] == L'/') Do you mean the desired result from PathCreateFromUrlW if it's used in the handler?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10708#note_139993