Jacek Caban : urlmon: Correctly handle file URLs with '|' instead of ':' after drive letter.
Alexandre Julliard
julliard at winehq.org
Mon May 12 07:12:27 CDT 2008
Module: wine
Branch: master
Commit: 3efe4e68379c29714fd40340db3c9bec00ab4568
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3efe4e68379c29714fd40340db3c9bec00ab4568
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sat May 10 14:20:43 2008 +0200
urlmon: Correctly handle file URLs with '|' instead of ':' after drive letter.
---
dlls/urlmon/file.c | 3 +++
dlls/urlmon/tests/protocol.c | 17 ++++++++++-------
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/dlls/urlmon/file.c b/dlls/urlmon/file.c
index b3691b0..5c059d1 100644
--- a/dlls/urlmon/file.c
+++ b/dlls/urlmon/file.c
@@ -154,6 +154,9 @@ static HRESULT WINAPI FileProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
}
}
+ if(file_name[1] == '|')
+ file_name[1] = ':';
+
This->file = CreateFileW(file_name, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
diff --git a/dlls/urlmon/tests/protocol.c b/dlls/urlmon/tests/protocol.c
index c21134b..60d0ae8 100644
--- a/dlls/urlmon/tests/protocol.c
+++ b/dlls/urlmon/tests/protocol.c
@@ -27,6 +27,7 @@
#include "winbase.h"
#include "ole2.h"
#include "urlmon.h"
+#include "wininet.h"
#include "initguid.h"
@@ -1387,7 +1388,7 @@ static void test_file_protocol_fail(void)
}
static void test_file_protocol(void) {
- WCHAR buf[MAX_PATH];
+ WCHAR buf[INTERNET_MAX_URL_LENGTH], file_name_buf[MAX_PATH];
DWORD size;
ULONG len;
HANDLE file;
@@ -1429,17 +1430,19 @@ static void test_file_protocol(void) {
test_file_protocol_url(buf);
memcpy(buf, wszFile2, sizeof(wszFile2));
- len = sizeof(wszFile2)/sizeof(WCHAR)-1;
- len += GetCurrentDirectoryW(sizeof(buf)/sizeof(WCHAR)-len, buf+len);
- buf[len++] = '\\';
- memcpy(buf+len, wszIndexHtml, sizeof(wszIndexHtml));
-
- file_name = buf + sizeof(wszFile2)/sizeof(WCHAR)-1;
+ len = GetCurrentDirectoryW(sizeof(file_name_buf)/sizeof(WCHAR), file_name_buf);
+ file_name_buf[len++] = '\\';
+ memcpy(file_name_buf+len, wszIndexHtml, sizeof(wszIndexHtml));
+ lstrcpyW(buf+sizeof(wszFile2)/sizeof(WCHAR)-1, file_name_buf);
+ file_name = file_name_buf;
bindf = 0;
test_file_protocol_url(buf);
bindf = BINDF_FROMURLMON;
test_file_protocol_url(buf);
+ buf[sizeof(wszFile2)/sizeof(WCHAR)] = '|';
+ test_file_protocol_url(buf);
+
memcpy(buf, wszFile3, sizeof(wszFile3));
len = sizeof(wszFile3)/sizeof(WCHAR)-1;
len += GetCurrentDirectoryW(sizeof(buf)/sizeof(WCHAR)-len, buf+len);
More information about the wine-cvs
mailing list