Module: wine Branch: master Commit: acfc1175a2204422e7ff089f47486b3f153124c1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=acfc1175a2204422e7ff089f47...
Author: Rob Shearman rob@codeweavers.com Date: Thu Aug 23 16:42:29 2007 +0100
shlwapi: Fix UrlCombineW for absolute URLs without slashes.
---
dlls/shlwapi/tests/path.c | 4 ++++ dlls/shlwapi/url.c | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/shlwapi/tests/path.c b/dlls/shlwapi/tests/path.c index d4ed84d..7eb02b2 100644 --- a/dlls/shlwapi/tests/path.c +++ b/dlls/shlwapi/tests/path.c @@ -205,6 +205,10 @@ const TEST_URL_COMBINE TEST_COMBINE[] = { {"xxx:@MSITStore:file.chm/file.html", "dir/file", 0, S_OK, "xxx:dir/file"}, {"mk:@MSITStore:file.chm::/file.html", "/dir/file", 0, S_OK, "mk:@MSITStore:file.chm::/dir/file"}, {"mk:@MSITStore:file.chm::/file.html", "mk:@MSITStore:file.chm::/dir/file", 0, S_OK, "mk:@MSITStore:file.chm::/dir/file"}, + {"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"}, };
struct { diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c index e1c0aa6..e7701da 100644 --- a/dlls/shlwapi/url.c +++ b/dlls/shlwapi/url.c @@ -736,8 +736,9 @@ HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative, process_case = 4; break; } - /* case where scheme is followed by document path */ - process_case = 5; + /* replace either just location if base's location starts with a + * slash or otherwise everything */ + process_case = (*base.pszSuffix == '/') ? 5 : 1; break; } if ((*relative.pszSuffix == '/') && (*(relative.pszSuffix+1) == '/')) {