Jacek Caban : urlmon: Don't pass query part of URL to CreateUrlCacheEntryW.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jun 6 07:41:58 CDT 2007


Module: wine
Branch: master
Commit: daca693f30b2c4c96e570a4523ccc4c8bfb07b77
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=daca693f30b2c4c96e570a4523ccc4c8bfb07b77

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Jun  6 04:01:13 2007 +0200

urlmon: Don't pass query part of URL to CreateUrlCacheEntryW.

---

 dlls/urlmon/umstream.c |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/dlls/urlmon/umstream.c b/dlls/urlmon/umstream.c
index 4a49b77..cd5e153 100644
--- a/dlls/urlmon/umstream.c
+++ b/dlls/urlmon/umstream.c
@@ -49,32 +49,30 @@ HRESULT UMCreateStreamOnCacheFile(LPCWSTR pszURL,
 {
     IUMCacheStream* ucstr;
     HANDLE handle;
-    LPWSTR ext;
-    LPCWSTR c;
-    LPCWSTR eloc = 0;
+    DWORD size;
+    LPWSTR url, c, ext = NULL;
     HRESULT hr;
 
-    for (c = pszURL; *c && *c != '#' && *c != '?'; ++c)
+    size = (strlenW(pszURL)+1)*sizeof(WCHAR);
+    url = HeapAlloc(GetProcessHeap(), 0, size);
+    memcpy(url, pszURL, size);
+
+    for (c = url; *c && *c != '#' && *c != '?'; ++c)
     {
         if (*c == '.')
-           eloc = c + 1;
-        else if (*c == '/' || *c == '\\')
-           eloc = 0;
+            ext = c+1;
+        else if(*c == '/')
+            ext = NULL;
     }
 
-    if (!eloc)
-       eloc = c;
-
-    ext = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * (c - eloc + 1));
-    memcpy(ext, eloc, sizeof(WCHAR) * (c - eloc));
-    ext[c - eloc] = 0;
+    *c = 0;
 
-    if(!CreateUrlCacheEntryW(pszURL, dwSize, ext, pszFileName, 0))
+    if(!CreateUrlCacheEntryW(url, dwSize, ext, pszFileName, 0))
        hr = HRESULT_FROM_WIN32(GetLastError());
     else
        hr = 0;
 
-    HeapFree(GetProcessHeap(), 0, ext);
+    HeapFree(GetProcessHeap(), 0, url);
 
     if (hr)
        return hr;




More information about the wine-cvs mailing list