From: André Hentschel nerv@dawncrow.de
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26445 Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com --- dlls/urlmon/ftp.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/urlmon/ftp.c b/dlls/urlmon/ftp.c index aef4a6cf16..31bdc79852 100644 --- a/dlls/urlmon/ftp.c +++ b/dlls/urlmon/ftp.c @@ -66,17 +66,24 @@ static HRESULT FtpProtocol_open_request(Protocol *prot, IUri *uri, DWORD request HINTERNET internet_session, IInternetBindInfo *bind_info) { FtpProtocol *This = impl_from_Protocol(prot); + DWORD path_size = 0; + LPWSTR path; BSTR url; HRESULT hres;
hres = IUri_GetAbsoluteUri(uri, &url); if(FAILED(hres)) return hres; + path = heap_strdupW((LPWSTR)url); + hres = UrlUnescapeW(path, NULL, &path_size, URL_UNESCAPE_INPLACE); + if(FAILED(hres)) + return hres; + SysFreeString(url);
- This->base.request = InternetOpenUrlW(internet_session, url, NULL, 0, + This->base.request = InternetOpenUrlW(internet_session, path, NULL, 0, request_flags|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_PASSIVE, (DWORD_PTR)&This->base); - SysFreeString(url); + heap_free(path); if (!This->base.request && GetLastError() != ERROR_IO_PENDING) { WARN("InternetOpenUrl failed: %d\n", GetLastError()); return INET_E_RESOURCE_NOT_FOUND;
Hi Alistair,
On 3/23/19 10:34 AM, Alistair Leslie-Hughes wrote:
From: André Hentschel nerv@dawncrow.de
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26445 Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com
dlls/urlmon/ftp.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/urlmon/ftp.c b/dlls/urlmon/ftp.c index aef4a6cf16..31bdc79852 100644 --- a/dlls/urlmon/ftp.c +++ b/dlls/urlmon/ftp.c @@ -66,17 +66,24 @@ static HRESULT FtpProtocol_open_request(Protocol *prot, IUri *uri, DWORD request HINTERNET internet_session, IInternetBindInfo *bind_info) { FtpProtocol *This = impl_from_Protocol(prot);
DWORD path_size = 0;
LPWSTR path; BSTR url; HRESULT hres;
hres = IUri_GetAbsoluteUri(uri, &url); if(FAILED(hres)) return hres;
path = heap_strdupW((LPWSTR)url);
Why do you need that? You could just unescape in place url, there is no need for a new copy.
Jacek