Index: http.c =================================================================== --- dll/win32/wininet/http.c (revision 73995) +++ dll/win32/wininet/http.c (working copy) @@ -3406,13 +3406,14 @@ if (lpszObjectName && *lpszObjectName) { HRESULT rc; + WCHAR dummy; - len = 0; - rc = UrlEscapeW(lpszObjectName, NULL, &len, URL_ESCAPE_SPACES_ONLY); + len = 1; + rc = UrlCanonicalizeW(lpszObjectName, &dummy, &len, URL_ESCAPE_SPACES_ONLY); if (rc != E_POINTER) len = strlenW(lpszObjectName)+1; request->path = heap_alloc(len*sizeof(WCHAR)); - rc = UrlEscapeW(lpszObjectName, request->path, &len, + rc = UrlCanonicalizeW(lpszObjectName, request->path, &len, URL_ESCAPE_SPACES_ONLY); if (rc != S_OK) { @@ -4193,12 +4194,13 @@ request->path = NULL; if (*path) { - DWORD needed = 0; + DWORD needed = 1; HRESULT rc; + WCHAR dummy = 0; - rc = UrlEscapeW(path, NULL, &needed, URL_ESCAPE_SPACES_ONLY); - if (rc == E_POINTER) - needed = strlenW(path)+1; + rc = UrlEscapeW(path, &dummy, &needed, URL_ESCAPE_SPACES_ONLY); + if (rc != E_POINTER) + ERR("Unable to escape string!(%s) (%d)\n",debugstr_w(path),rc); request->path = heap_alloc(needed*sizeof(WCHAR)); rc = UrlEscapeW(path, request->path, &needed, URL_ESCAPE_SPACES_ONLY);