Aric Stewart : shlwapi: URL_FILE_USE_PATHURL flag only unescapes file urls in UrlCanonicalize.
Alexandre Julliard
julliard at winehq.org
Wed Jun 23 10:57:06 CDT 2010
Module: wine
Branch: master
Commit: ea029bd2fb3754ea1c30e41e1a4c6cb770f4c9e1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea029bd2fb3754ea1c30e41e1a4c6cb770f4c9e1
Author: Aric Stewart <aric at 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 |
More information about the wine-cvs
mailing list