Module: wine Branch: master Commit: 3f6142e00db45504c687773ff60440279aed6699 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3f6142e00db45504c687773ff6...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Mar 8 13:48:01 2012 +0100
shlwapi: Lowercase schemes in UrlCombine function.
---
dlls/shlwapi/tests/url.c | 4 ++-- dlls/shlwapi/url.c | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index 29d0cff..949aaa0 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -343,7 +343,7 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { {"foo:today", "foo:calendar", 0, S_OK, "foo:calendar"}, {"foo:today", "bar:calendar", 0, S_OK, "bar:calendar"}, {"foo:/today", "foo:calendar", 0, S_OK, "foo:/calendar"}, - {"foo:/today/", "foo:calendar", 0, S_OK, "foo:/today/calendar"}, + {"Foo:/today/", "fOo:calendar", 0, S_OK, "foo:/today/calendar"}, {"mk:@MSITStore:dir/test.chm::dir/index.html", "image.jpg", 0, S_OK, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, {"mk:@MSITStore:dir/test.chm::dir/dir2/index.html", "../image.jpg", 0, S_OK, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, /* UrlCombine case 2 tests. Schemes do not match */ @@ -365,7 +365,7 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { {"outbind://xxxxxxxxx/","http:wine16/dir",0, S_OK,"http:wine16/dir"}, {"http://xxxxxxxxx%22,%22outbind:wine17/dir%22,URL_PLUGGABLE_PROTOCOL, S_OK,"outbind:wine17/dir"}, {"xxx://xxxxxxxxx","ftp:wine18/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"ftp:wine18/dir"}, - {"ftp://xxxxxxxxx/","xxx:wine19/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"xxx:wine19/dir"}, + {"ftp://xxxxxxxxx/","xXx:wine19/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"xxx:wine19/dir"}, {"outbind://xxxxxxxxx/","http:wine20/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"http:wine20/dir"}, {"file:///c:/dir/file.txt","index.html?test=c:/abc",URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO,S_OK,"file:///c:/dir/index.html?test=c:/abc"} }; diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c index d43bea5..54b1b10 100644 --- a/dlls/shlwapi/url.c +++ b/dlls/shlwapi/url.c @@ -662,7 +662,7 @@ HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative, { PARSEDURLW base, relative; DWORD myflags, sizeloc = 0; - DWORD len, res1, res2, process_case = 0; + DWORD i, len, res1, res2, process_case = 0; LPWSTR work, preliminary, mbase, mrelative; static const WCHAR myfilestr[] = {'f','i','l','e',':','/','/','/','\0'}; HRESULT ret; @@ -703,6 +703,10 @@ HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative, else do { BOOL manual_search = FALSE;
+ work = (LPWSTR)base.pszProtocol; + for(i=0; i<base.cchProtocol; i++) + work[i] = tolowerW(work[i]); + /* mk is a special case */ if(base.nScheme == URL_SCHEME_MK) { static const WCHAR wsz[] = {':',':',0}; @@ -826,7 +830,11 @@ HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative, } process_case = (*base.pszSuffix == '/' || base.nScheme == URL_SCHEME_MK) ? 5 : 3; break; - } + }else { + work = (LPWSTR)relative.pszProtocol; + for(i=0; i<relative.cchProtocol; i++) + work[i] = tolowerW(work[i]); + }
/* handle cases where pszRelative has scheme */ if ((base.cchProtocol == relative.cchProtocol) &&