[PATCH 0/1] MR6786: kernelbase: Support backslashes when parsing relative URL in UrlCombine.
From: Piotr Caban <piotr(a)codeweavers.com> --- dlls/kernelbase/path.c | 5 +++-- dlls/shlwapi/tests/url.c | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/kernelbase/path.c b/dlls/kernelbase/path.c index 244b65d1755..a737294e655 100644 --- a/dlls/kernelbase/path.c +++ b/dlls/kernelbase/path.c @@ -5060,13 +5060,14 @@ HRESULT WINAPI UrlCombineW(const WCHAR *baseW, const WCHAR *relativeW, WCHAR *co process_case = 1; break; } - if (relativeW[0] == '/' && relativeW[1] == '/') + if ((relativeW[0] == '/' || relativeW[0] == '\\') && + (relativeW[1] == '/' || relativeW[1] == '\\')) { /* Relative has location and the rest. */ process_case = 3; break; } - if (*relativeW == '/') + if (*relativeW == '/' || *relativeW == '\\') { /* Relative is root to location. */ process_case = 4; diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index e51a080c330..909867c9350 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -205,6 +205,7 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { {"http://www.winehq.org/tests/../tests", "tests4", 0, "http://www.winehq.org/tests4"}, {"http://www.winehq.org/tests/../tests/", "tests5", 0, "http://www.winehq.org/tests/tests5"}, {"http://www.winehq.org/tests/../tests/", "/tests6/..", 0, "http://www.winehq.org/"}, + {"http://www.winehq.org/tests/../tests/", "\\tests6\\..", 0, "http://www.winehq.org/"}, {"http://www.winehq.org/tests/../tests/..", "tests7/..", 0, "http://www.winehq.org/"}, {"http://www.winehq.org/tests/?query=x&return=y", "tests8", 0, "http://www.winehq.org/tests/tests8"}, {"http://www.winehq.org/tests/#example", "tests9", 0, "http://www.winehq.org/tests/tests9"}, @@ -234,6 +235,8 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { {"Foo:/today/", "fOo:calendar", 0, "foo:/today/calendar"}, {"mk:@MSITStore:dir/test.chm::dir/index.html", "image.jpg", 0, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, {"mk:@MSITStore:dir/test.chm::dir/dir2/index.html", "../image.jpg", 0, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, + {"c:\\test\\", "//share/file.txt", 0, "file://share/file.txt"}, + {"c:\\test\\", "\\\\share\\file.txt", 0, "file://share/file.txt"}, /* UrlCombine case 2 tests. Schemes do not match */ {"outbind://xxxxxxxxx", "http://wine1/dir", 0, "http://wine1/dir"}, {"xxxx://xxxxxxxxx", "http://wine2/dir", 0, "http://wine2/dir"}, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6786
participants (2)
-
Piotr Caban -
Piotr Caban (@piotr)