Alexandre Julliard : kernel32: Check for tabs too when extracting the program name

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 19 14:22:22 CST 2005


Module: wine
Branch: refs/heads/master
Commit: 68df9182825ee82793bc8fb76dd0ae7409fbd384
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=68df9182825ee82793bc8fb76dd0ae7409fbd384

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Dec 19 21:25:23 2005 +0100

kernel32: Check for tabs too when extracting the program name
(reported by Vitaliy Margolen).

---

 dlls/kernel/process.c |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c
index e75fccb..19d945b 100644
--- a/dlls/kernel/process.c
+++ b/dlls/kernel/process.c
@@ -1736,6 +1736,7 @@ static LPWSTR get_file_name( LPCWSTR app
 
     WCHAR *name, *pos, *ret = NULL;
     const WCHAR *p;
+    BOOL got_space;
 
     /* if we have an app name, everything is easy */
 
@@ -1780,26 +1781,27 @@ static LPWSTR get_file_name( LPCWSTR app
         return NULL;
     pos = name;
     p = cmdline;
+    got_space = FALSE;
 
     while (*p)
     {
-        do *pos++ = *p++; while (*p && *p != ' ');
+        do *pos++ = *p++; while (*p && *p != ' ' && *p != '\t');
         *pos = 0;
         if (find_exe_file( name, buffer, buflen, handle ))
         {
             ret = cmdline;
             break;
         }
+        if (*p) got_space = TRUE;
     }
 
-    if (!ret || !strchrW( name, ' ' )) goto done;  /* no change necessary */
-
-    /* now build a new command-line with quotes */
-
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, (strlenW(cmdline) + 3) * sizeof(WCHAR) )))
-        goto done;
-    sprintfW( ret, quotesW, name );
-    strcatW( ret, p );
+    if (ret && got_space)  /* now build a new command-line with quotes */
+    {
+        if (!(ret = HeapAlloc( GetProcessHeap(), 0, (strlenW(cmdline) + 3) * sizeof(WCHAR) )))
+            goto done;
+        sprintfW( ret, quotesW, name );
+        strcatW( ret, p );
+    }
 
  done:
     HeapFree( GetProcessHeap(), 0, name );




More information about the wine-cvs mailing list