]> sourceware.org Git - newlib-cygwin.git/commitdiff
* syscalls.cc (internal_setlocale): Only convert $PATH if there is a
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 19 Oct 2009 19:47:15 +0000 (19:47 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 19 Oct 2009 19:47:15 +0000 (19:47 +0000)
$PATH.

winsup/cygwin/ChangeLog
winsup/cygwin/syscalls.cc

index 2f35b71abc9693aefd6fcbf7d0b9c088d1e59d6d..d28435f33d466401ca7f7497bd1b80399becaead 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (internal_setlocale): Only convert $PATH if there is a
+       $PATH.
+
 2009-10-19  Corinna Vinschen  <corinna@vinschen.de>
 
        * spawn.cc (av::fixup): Treat non-readable, but executable files as
index aa112c4937bad687f4c1e4649c998ccd8da2f648..d9c9d596fbafd71153c4412d721d1955952e39fc 100644 (file)
@@ -4242,13 +4242,17 @@ internal_setlocale ()
   /* FIXME: It could be necessary to convert the entire environment,
            not just PATH. */
   tmp_pathbuf tp;
-  wchar_t *w_path, *w_cwd;
+  char *path = getenv ("PATH");
+  wchar_t *w_path = NULL, *w_cwd;
 
   debug_printf ("Cygwin charset changed from %s to %s",
                cygheap->locale.charset, __locale_charset ());
-  /* Fetch CWD and PATH and convert to wchar_t in previous charset. */
-  w_path = tp.w_get ();
-  sys_mbstowcs (w_path, 32768, getenv ("PATH"));
+  /* Fetch PATH and CWD and convert to wchar_t in previous charset. */
+  if (path && *path)   /* $PATH can be potentially unset. */
+    {
+      w_path = tp.w_get ();
+      sys_mbstowcs (w_path, 32768, path);
+    }
   w_cwd = tp.w_get ();
   cwdstuff::cwd_lock.acquire ();
   sys_mbstowcs (w_cwd, 32768, cygheap->cwd.get_posix ());
@@ -4259,9 +4263,12 @@ internal_setlocale ()
   /* Restore CWD and PATH in new charset. */
   cygheap->cwd.reset_posix (w_cwd);
   cwdstuff::cwd_lock.release ();
-  char *c_path = tp.c_get ();
-  sys_wcstombs (c_path, 32768, w_path);
-  setenv ("PATH", c_path, 1);
+  if (w_path)
+    {
+      char *c_path = tp.c_get ();
+      sys_wcstombs (c_path, 32768, w_path);
+      setenv ("PATH", c_path, 1);
+    }
 }
 
 /* Called from dll_crt0_1, before calling the application's main().
This page took 0.041464 seconds and 5 git commands to generate.