urlmon: Make sure to include query part of relative URI containing path in combine_uri.

This commit is contained in:
Jacek Caban 2011-05-12 14:47:20 +00:00 committed by Alexandre Julliard
parent 2e46c671d6
commit ebf9f12c29
2 changed files with 86 additions and 0 deletions

View File

@ -6078,6 +6078,87 @@ static const uri_combine_test uri_combine_tests[] = {
{URL_SCHEME_FILE,S_OK},
{URLZONE_INVALID,E_NOTIMPL}
}
},
{ "http://winehq.org/dir/testfile",0,
"test?querystring",Uri_CREATE_ALLOW_RELATIVE,
0,S_OK,FALSE,
{
{"http://winehq.org/dir/test?querystring",S_OK},
{"winehq.org",S_OK},
{"http://winehq.org/dir/test?querystring",S_OK},
{"winehq.org",S_OK},
{"",S_FALSE},
{"",S_FALSE},
{"winehq.org",S_OK},
{"",S_FALSE},
{"/dir/test",S_OK},
{"/dir/test?querystring",S_OK},
{"?querystring",S_OK},
{"http://winehq.org/dir/test?querystring",S_OK},
{"http",S_OK},
{"",S_FALSE},
{"",S_FALSE}
},
{
{Uri_HOST_DNS,S_OK},
{80,S_OK},
{URL_SCHEME_HTTP,S_OK},
{URLZONE_INVALID,E_NOTIMPL}
}
},
{ "http://winehq.org/dir/test",0,
"test?querystring",Uri_CREATE_ALLOW_RELATIVE,
0,S_OK,FALSE,
{
{"http://winehq.org/dir/test?querystring",S_OK},
{"winehq.org",S_OK},
{"http://winehq.org/dir/test?querystring",S_OK},
{"winehq.org",S_OK},
{"",S_FALSE},
{"",S_FALSE},
{"winehq.org",S_OK},
{"",S_FALSE},
{"/dir/test",S_OK},
{"/dir/test?querystring",S_OK},
{"?querystring",S_OK},
{"http://winehq.org/dir/test?querystring",S_OK},
{"http",S_OK},
{"",S_FALSE},
{"",S_FALSE}
},
{
{Uri_HOST_DNS,S_OK},
{80,S_OK},
{URL_SCHEME_HTTP,S_OK},
{URLZONE_INVALID,E_NOTIMPL}
}
},
{ "http://winehq.org/dir/test?querystring",0,
"#hash",Uri_CREATE_ALLOW_RELATIVE,
0,S_OK,FALSE,
{
{"http://winehq.org/dir/test?querystring#hash",S_OK},
{"winehq.org",S_OK},
{"http://winehq.org/dir/test?querystring#hash",S_OK},
{"winehq.org",S_OK},
{"",S_FALSE},
{"#hash",S_OK},
{"winehq.org",S_OK},
{"",S_FALSE},
{"/dir/test",S_OK},
{"/dir/test?querystring",S_OK},
{"?querystring",S_OK},
{"http://winehq.org/dir/test?querystring#hash",S_OK},
{"http",S_OK},
{"",S_FALSE},
{"",S_FALSE}
},
{
{Uri_HOST_DNS,S_OK},
{80,S_OK},
{URL_SCHEME_HTTP,S_OK},
{URLZONE_INVALID,E_NOTIMPL}
}
}
};

View File

@ -6006,6 +6006,11 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result,
}
}
if(relative->query_start > -1) {
data.query = relative->canon_uri+relative->query_start;
data.query_len = relative->query_len;
}
/* Make sure the path component is valid. */
ptr = path;
pptr = &ptr;