Aric Stewart : shlwapi: URL_FILE_USE_PATHURL flag only unescapes file urls in UrlCanonicalize.
Module: wine Branch: master Commit: ea029bd2fb3754ea1c30e41e1a4c6cb770f4c9e1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea029bd2fb3754ea1c30e41e1a... Author: Aric Stewart <aric(a)codeweavers.com> Date: Wed Jun 23 15:47:35 2010 +0900 shlwapi: URL_FILE_USE_PATHURL flag only unescapes file urls in UrlCanonicalize. --- dlls/shlwapi/tests/url.c | 4 +++- dlls/shlwapi/url.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index c828ea9..8a8f68a 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -160,7 +160,9 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { {"A", 0, S_OK, "A", FALSE}, {"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO | URL_WININET_COMPATIBILITY /*0x82000000*/, S_OK, "/uri-res/N2R?urn:sha1:B3K", FALSE} /*LimeWire online installer calls this*/, {"http:www.winehq.org/dir/../index.html", 0, S_OK, "http:www.winehq.org/index.html"}, - {"http://localhost/test.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/test.html"} + {"http://localhost/test.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/test.html"}, + {"http://localhost/te%20st.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/te%20st.html"}, + {"http://www.winehq.org/%E6%A1%9C.html", URL_FILE_USE_PATHURL, S_OK, "http://www.winehq.org/%E6%A1%9C.html"} }; /* ################ */ diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c index ad7d989..d7a36db 100644 --- a/dlls/shlwapi/url.c +++ b/dlls/shlwapi/url.c @@ -486,7 +486,9 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, while ((nLen > 0) && ((lpszUrlCpy[nLen-1] <= ' '))) lpszUrlCpy[--nLen]=0; - if(dwFlags & (URL_UNESCAPE | URL_FILE_USE_PATHURL)) + if((dwFlags & URL_UNESCAPE) || + ((dwFlags & URL_FILE_USE_PATHURL) && nByteLen >= sizeof(wszFile) + && !memcmp(wszFile, pszUrl, sizeof(wszFile)))) UrlUnescapeW(lpszUrlCpy, NULL, &nLen, URL_UNESCAPE_INPLACE); if((EscapeFlags = dwFlags & (URL_ESCAPE_UNSAFE |
participants (1)
-
Alexandre Julliard