Alexandre Julliard : explorer: Specify an explicit path when launching winefile.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Aug 18 14:20:57 CDT 2006


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Aug 18 20:54:13 2006 +0200

explorer: Specify an explicit path when launching winefile.

---

 programs/explorer/explorer.c |   24 +++++++++---------------
 1 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/programs/explorer/explorer.c b/programs/explorer/explorer.c
index 9a3bf7c..021259f 100644
--- a/programs/explorer/explorer.c
+++ b/programs/explorer/explorer.c
@@ -157,7 +157,7 @@ int WINAPI WinMain(HINSTANCE hinstance,
     PROCESS_INFORMATION info;
     parameters_struct   parameters;
     BOOL rc;
-    static const WCHAR winefile[] = {'w','i','n','e','f','i','l','e','.','e','x','e',0};
+    static const WCHAR winefile[] = {'\\','w','i','n','e','f','i','l','e','.','e','x','e',0};
     static const WCHAR space[] = {' ',0};
     LPWSTR winefile_commandline = NULL;
     DWORD len = 0;
@@ -166,23 +166,22 @@ int WINAPI WinMain(HINSTANCE hinstance,
     memset(&si,0,sizeof(STARTUPINFOW));
 
     ParseCommandLine(cmdline,&parameters);
-    len = lstrlenW(winefile) +1;
+    len = GetSystemDirectoryW( NULL, 0 ) + sizeof(winefile)/sizeof(WCHAR);
+
+    if (parameters.selection[0]) len += lstrlenW(parameters.selection) + 2;
+    else if (parameters.root[0]) len += lstrlenW(parameters.root) + 3;
+
+    winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR));
+    GetSystemDirectoryW( winefile_commandline, len );
+    lstrcatW(winefile_commandline,winefile);
 
     if (parameters.selection[0])
     {
-        len += lstrlenW(parameters.selection) + 2;
-        winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR));
-
-        lstrcpyW(winefile_commandline,winefile);
         lstrcatW(winefile_commandline,space);
         lstrcatW(winefile_commandline,parameters.selection);
     }
     else if (parameters.root[0])
     {
-        len += lstrlenW(parameters.root) + 3;
-        winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR));
-
-        lstrcpyW(winefile_commandline,winefile);
         lstrcatW(winefile_commandline,space);
         lstrcatW(winefile_commandline,parameters.root);
         if (winefile_commandline[lstrlenW(winefile_commandline)-1]!='\\')
@@ -191,11 +190,6 @@ int WINAPI WinMain(HINSTANCE hinstance,
             lstrcatW(winefile_commandline,slash);
         }
     }
-    else
-    {
-        winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR));
-        lstrcpyW(winefile_commandline,winefile);
-    }
 
     rc = CreateProcessW(NULL, winefile_commandline, NULL, NULL, FALSE, 0, NULL,
                         parameters.root, &si, &info);




More information about the wine-cvs mailing list