Module: wine Branch: master Commit: ea029bd2fb3754ea1c30e41e1a4c6cb770f4c9e1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea029bd2fb3754ea1c30e41e1a...
Author: Aric Stewart aric@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%22%7D + {"http://localhost/test.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/test.html%22%7D, + {"http://localhost/te%20st.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/te%20st.html%22%7D, + {"http://www.winehq.org/%E6%A1%9C.html", URL_FILE_USE_PATHURL, S_OK, "http://www.winehq.org/%E6%A1%9C.html%22%7D };
/* ################ */ 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 |