Module: wine Branch: master Commit: 1fb705de628699c33c9906e0b71d99d2ce7a0355 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1fb705de628699c33c9906e0b7...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Nov 16 12:51:23 2011 +0100
urlmon: Don't set is_opaque for file URIs in validate_components.
---
dlls/urlmon/tests/uri.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/uri.c | 3 +- 2 files changed, 66 insertions(+), 1 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c index 478a5f0..c8fb522 100644 --- a/dlls/urlmon/tests/uri.c +++ b/dlls/urlmon/tests/uri.c @@ -5525,6 +5525,70 @@ static const uri_builder_test uri_builder_tests[] = { 0,INET_E_INVALID_URL,FALSE, 0,INET_E_INVALID_URL,FALSE, 0,0,0,INET_E_INVALID_URL,FALSE + }, + { "file:///c:/dir/file.html",0,S_OK,FALSE, + { + {TRUE,NULL,NULL,Uri_PROPERTY_FRAGMENT,S_OK}, + }, + {FALSE}, + 0,S_OK,FALSE, + 0,S_OK,FALSE, + 0,0,0,S_OK,FALSE, + { + {"file:///c:/dir/file.html",S_OK}, + {"",S_FALSE}, + {"file:///c:/dir/file.html",S_OK}, + {"",S_FALSE}, + {".html",S_OK}, + {"",S_FALSE}, + {"",S_FALSE}, + {"",S_FALSE}, + {"/c:/dir/file.html",S_OK}, + {"/c:/dir/file.html",S_OK}, + {"",S_FALSE}, + {"file:///c:/dir/file.html",S_OK}, + {"file",S_OK}, + {"",S_FALSE}, + {"",S_FALSE} + }, + { + {Uri_HOST_UNKNOWN,S_OK}, + {0,S_FALSE}, + {URL_SCHEME_FILE,S_OK}, + {URLZONE_INVALID,E_NOTIMPL} + } + }, + { "file:///c:/dir/file.html",0,S_OK,FALSE, + { + {TRUE,"#",NULL,Uri_PROPERTY_FRAGMENT,S_OK}, + }, + {FALSE}, + 0,S_OK,FALSE, + 0,S_OK,FALSE, + 0,0,0,S_OK,FALSE, + { + {"file:///c:/dir/file.html#",S_OK}, + {"",S_FALSE}, + {"file:///c:/dir/file.html#",S_OK}, + {"",S_FALSE}, + {".html",S_OK}, + {"#",S_OK}, + {"",S_FALSE}, + {"",S_FALSE}, + {"/c:/dir/file.html",S_OK}, + {"/c:/dir/file.html",S_OK}, + {"",S_FALSE}, + {"file:///c:/dir/file.html#",S_OK}, + {"file",S_OK}, + {"",S_FALSE}, + {"",S_FALSE} + }, + { + {Uri_HOST_UNKNOWN,S_OK}, + {0,S_FALSE}, + {URL_SCHEME_FILE,S_OK}, + {URLZONE_INVALID,E_NOTIMPL} + } } };
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index 8f0e7e7..a36f730 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -3941,7 +3941,8 @@ static HRESULT validate_components(const UriBuilder *builder, parse_data *data,
/* The URI is opaque if it doesn't have an authority component. */ if(!data->is_relative) - data->is_opaque = !data->username && !data->password && !data->host && !data->has_port; + data->is_opaque = !data->username && !data->password && !data->host && !data->has_port + && data->scheme_type != URL_SCHEME_FILE; else data->is_opaque = !data->host && !data->has_port;