commit b7770bfbc904077e2adb41ff1bc590c09f424fa4 Author: Aric Stewart Date: Wed Jun 23 15:45:01 2010 +0900 shlwapi: URL_FILE_USE_PATHURL flag only unescapes file urls in UrlCanonicalize Correct Japanese url corruption in Internet Explorer 6 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 |