[1/3] kernel32: use an appropriate function for conversion of unix cwd

Vincent Povirk madewokherd+8cd9 at gmail.com
Sun Apr 5 14:29:11 CDT 2009


This patchset should fix bug 15883.

Vincent Povirk
-------------- next part --------------
From e3562bf62f6f518835458c4eb042b48f4998170d Mon Sep 17 00:00:00 2001
From: Vincent Povirk <madewokherd at gmail.com>
Date: Sun, 5 Apr 2009 14:15:23 -0500
Subject: [PATCH] kernel32: use an appropriate function for conversion of unix cwd

---
 dlls/kernel32/kernel_private.h |    3 +++
 dlls/kernel32/process.c        |    9 ++++-----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/dlls/kernel32/kernel_private.h b/dlls/kernel32/kernel_private.h
index b23aedf..70b8f0e 100644
--- a/dlls/kernel32/kernel_private.h
+++ b/dlls/kernel32/kernel_private.h
@@ -116,6 +116,9 @@ extern BOOL   load_winedos(void);
 /* environ.c */
 extern void ENV_CopyStartupInformation(void);
 
+/* path.c */
+WCHAR * CDECL wine_get_dos_file_name(LPCSTR);
+
 /* computername.c */
 extern void COMPUTERNAME_Init(void);
 
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 624d4de..98dca63 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -788,12 +788,11 @@ static void init_current_directory( CURDIR *cur_dir )
 
     if (cwd)
     {
-        WCHAR *dirW;
-        int lenW = MultiByteToWideChar( CP_UNIXCP, 0, cwd, -1, NULL, 0 );
-        if ((dirW = HeapAlloc( GetProcessHeap(), 0, lenW * sizeof(WCHAR) )))
+        WCHAR *cwd_dos;
+        cwd_dos = wine_get_dos_file_name( cwd );
+        if (cwd_dos)
         {
-            MultiByteToWideChar( CP_UNIXCP, 0, cwd, -1, dirW, lenW );
-            RtlInitUnicodeString( &dir_str, dirW );
+            RtlInitUnicodeString( &dir_str, cwd_dos );
             RtlSetCurrentDirectory_U( &dir_str );
             RtlFreeUnicodeString( &dir_str );
         }
-- 
1.5.4.3


More information about the wine-patches mailing list