OSDN Git Service

* spawn.cc (spawn_guts): Only try to remove long path prefix from
authorcorinna <corinna>
Mon, 25 Jan 2010 11:21:56 +0000 (11:21 +0000)
committercorinna <corinna>
Mon, 25 Jan 2010 11:21:56 +0000 (11:21 +0000)
runpath if runpath is not NULL.

winsup/cygwin/ChangeLog
winsup/cygwin/spawn.cc

index 89b3252..518d0e3 100644 (file)
@@ -1,5 +1,10 @@
 2010-01-25  Corinna Vinschen  <corinna@vinschen.de>
 
+       * spawn.cc (spawn_guts): Only try to remove long path prefix from
+       runpath if runpath is not NULL.
+
+2010-01-25  Corinna Vinschen  <corinna@vinschen.de>
+
        * nlsfuncs.cc (__get_lcid_from_locale):  Fix a comment.  Handle special
        language/TERRITORY combinations explicitely.  Explain why.
 
index fdbab76..c103337 100644 (file)
@@ -489,23 +489,24 @@ spawn_guts (const char *prog_arg, const char *const *argv,
     }
 
   runpath = null_app_name ? NULL : real_path.get_wide_win32_path (runpath);
-  { /* If the executable path length is < MAX_PATH, make sure the long path
-       win32 prefix is removed from the path to make subsequent native Win32
-       child processes happy which are not long path aware. */
-    USHORT len = real_path.get_nt_native_path ()->Length;
-    if (len < (MAX_PATH + 4) * sizeof (WCHAR)
-       || (runpath[5] != L':'                          /* UNC path */
-           && len < (MAX_PATH + 6) * sizeof (WCHAR)))
-      {
-       PWCHAR r = runpath + 4;
-       if (r[1] != L':') /* UNC path */
-         *(r += 2) = L'\\';
-       if (!RtlIsDosDeviceName_U (r))
-         runpath = r;
-       else if (*r == L'\\')
-         *r = L'C';
-      }
-  }
+  if (runpath)
+    { /* If the executable path length is < MAX_PATH, make sure the long path
+        win32 prefix is removed from the path to make subsequent native Win32
+        child processes happy which are not long path aware. */
+      USHORT len = real_path.get_nt_native_path ()->Length;
+      if (len < (MAX_PATH + 4) * sizeof (WCHAR)
+         || (runpath[5] != L':'                                /* UNC path */
+             && len < (MAX_PATH + 6) * sizeof (WCHAR)))
+       {
+         PWCHAR r = runpath + 4;
+         if (r[1] != L':') /* UNC path */
+           *(r += 2) = L'\\';
+         if (!RtlIsDosDeviceName_U (r))
+           runpath = r;
+         else if (*r == L'\\')
+           *r = L'C';
+       }
+    }
 
   syscall_printf ("null_app_name %d (%W, %.9500W)", null_app_name,
                  runpath, wone_line);