Piotr Caban : wininet: Use short path name when container path can' t be converted to CP_ACP.

Alexandre Julliard julliard at winehq.org
Mon Apr 1 13:48:41 CDT 2013


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Apr  1 13:12:30 2013 +0200

wininet: Use short path name when container path can't be converted to CP_ACP.

---

 dlls/wininet/urlcache.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index d92a7d6..2167036 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -770,6 +770,7 @@ static void cache_containers_init(void)
         WCHAR wszCachePath[MAX_PATH];
         WCHAR wszMutexName[MAX_PATH];
         int path_len, suffix_len;
+        BOOL def_char;
 
         if (!SHGetSpecialFolderPathW(NULL, wszCachePath, DefaultContainerData[i].nFolder, TRUE))
         {
@@ -797,6 +798,20 @@ static void cache_containers_init(void)
             wszCachePath[path_len + suffix_len + 2] = '\0';
         }
 
+        if (!WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, wszCachePath, path_len,
+                    NULL, 0, NULL, &def_char) || def_char)
+        {
+            WCHAR tmp[MAX_PATH];
+
+            /* cannot convert path to ANSI code page */
+            if (!(path_len = GetShortPathNameW(wszCachePath, tmp, MAX_PATH)) ||
+                !WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, tmp, path_len,
+                    NULL, 0, NULL, &def_char) || def_char)
+                ERR("Can't create container path accessible by ANSI functions\n");
+            else
+                memcpy(wszCachePath, tmp, (path_len+1)*sizeof(WCHAR));
+        }
+
         cache_containers_add(DefaultContainerData[i].cache_prefix, wszCachePath,
                 DefaultContainerData[i].default_entry_type, wszMutexName);
     }




More information about the wine-cvs mailing list