From e652cf9e2323e63267381573fc398f7146336404 Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Tue, 23 Nov 2021 07:42:22 -0800 Subject: [PATCH 2/2] kernelbase: Handle UNC path in UrlApplySchemeW. Signed-off-by: Daniel Lehman --- dlls/kernelbase/path.c | 2 +- dlls/shlwapi/tests/url.c | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/dlls/kernelbase/path.c b/dlls/kernelbase/path.c index a9105341fad4..b4b31410a3a4 100644 --- a/dlls/kernelbase/path.c +++ b/dlls/kernelbase/path.c @@ -4020,7 +4020,7 @@ HRESULT WINAPI UrlApplySchemeW(const WCHAR *url, WCHAR *out, DWORD *length, DWOR if (flags & URL_APPLY_GUESSFILE) { - if (*length > 1 && ':' == url[1]) + if ((*length > 1 && ':' == url[1]) || PathIsUNCW(url)) { res1 = *length; hr = url_create_from_path(url, out, &res1); diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index ea180155f214..2b6a376cd47f 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -73,7 +73,6 @@ typedef struct _TEST_URL_APPLY { HRESULT res; DWORD newlen; const char * newurl; - BOOL todo; } TEST_URL_APPLY; static const TEST_URL_APPLY TEST_APPLY[] = { @@ -99,7 +98,7 @@ static const TEST_URL_APPLY TEST_APPLY[] = { {"file:///c:/windows", URL_APPLY_GUESSFILE , S_FALSE, TEST_APPLY_MAX_LENGTH, untouchedA}, {"aa:\\windows", URL_APPLY_GUESSFILE , S_FALSE, TEST_APPLY_MAX_LENGTH, untouchedA}, {"\\\\server\\share", URL_APPLY_DEFAULT, S_OK, 21, "http://\\\\server\\share"}, - {"\\\\server\\share", URL_APPLY_GUESSFILE, S_OK, 19, "file://server/share", TRUE}, + {"\\\\server\\share", URL_APPLY_GUESSFILE, S_OK, 19, "file://server/share"}, {"\\\\server\\share", URL_APPLY_GUESSSCHEME, S_FALSE, TEST_APPLY_MAX_LENGTH, untouchedA}, {"file://server/share", URL_APPLY_GUESSFILE, S_FALSE, TEST_APPLY_MAX_LENGTH, untouchedA}, {"file://server/share", URL_APPLY_GUESSSCHEME, S_FALSE, TEST_APPLY_MAX_LENGTH, untouchedA}, @@ -549,7 +548,7 @@ static void test_UrlApplyScheme(void) len = TEST_APPLY_MAX_LENGTH; lstrcpyA(newurl, untouchedA); res = pUrlApplySchemeA(TEST_APPLY[i].url, newurl, &len, TEST_APPLY[i].flags); - todo_wine_if(TEST_APPLY[i].todo) { + ok( res == TEST_APPLY[i].res, "#%dA: got HRESULT 0x%x (expected 0x%x)\n", i, res, TEST_APPLY[i].res); @@ -558,7 +557,7 @@ static void test_UrlApplyScheme(void) ok( !lstrcmpA(newurl, TEST_APPLY[i].newurl), "#%dA: got '%s' (expected '%s')\n", i, newurl, TEST_APPLY[i].newurl); - } + /* returned length is in character */ len = TEST_APPLY_MAX_LENGTH; lstrcpyA(newurl, untouchedA); @@ -567,7 +566,7 @@ static void test_UrlApplyScheme(void) res = pUrlApplySchemeW(urlW, newurlW, &len, TEST_APPLY[i].flags); WideCharToMultiByte(CP_ACP, 0, newurlW, -1, newurl, TEST_APPLY_MAX_LENGTH, NULL, NULL); - todo_wine_if(TEST_APPLY[i].todo) { + ok( res == TEST_APPLY[i].res, "#%dW: got HRESULT 0x%x (expected 0x%x)\n", i, res, TEST_APPLY[i].res); @@ -576,7 +575,6 @@ static void test_UrlApplyScheme(void) ok( !lstrcmpA(newurl, TEST_APPLY[i].newurl), "#%dW: got '%s' (expected '%s')\n", i, newurl, TEST_APPLY[i].newurl); - } } /* buffer too small */ -- 2.27.0