[SV 40043] Set the current directory before printing errors.
authorPaul Smith <psmith@gnu.org>
Wed, 18 Sep 2013 23:29:28 +0000 (19:29 -0400)
committerPaul Smith <psmith@gnu.org>
Wed, 18 Sep 2013 23:29:28 +0000 (19:29 -0400)
ChangeLog
main.c

index a9e3d3656096cbcbc83ddbc025ea28ab67d7bcbd..8fb2037c8e3ea7e2606d3d91d3cf2387e0d55cfd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-18  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Set starting_directory before we write any
+       errors.  Fixes Savannah bug #40043.
+
 2013-09-16  Eli Zaretskii  <eliz@gnu.org>
 
        * output.c [WINDOWS32]: Include windows.h and sub_proc.h, to avoid
diff --git a/main.c b/main.c
index 03f5418385350005a783557bfd90a34bff55e162..059f5b588337ebb40b6fa1a2ab67a469a5f19107 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1477,6 +1477,9 @@ main (int argc, char **argv, char **envp)
 #endif /* WINDOWS32 */
 #endif
 
+  /* We may move, but until we do, here we are.  */
+  starting_directory = current_directory;
+
 #ifdef MAKE_JOBSERVER
   /* If the jobserver-fds option is seen, make sure that -j is reasonable.
      This can't be usefully set in the makefile, and we want to verify the
@@ -1667,11 +1670,8 @@ main (int argc, char **argv, char **envp)
   construct_include_path (include_directories == 0
                           ? 0 : include_directories->list);
 
-  /* Figure out where we are now, after chdir'ing.  */
-  if (directories == 0)
-    /* We didn't move, so we're still in the same place.  */
-    starting_directory = current_directory;
-  else
+  /* If we chdir'ed, figure out where we are now.  */
+  if (directories)
     {
 #ifdef WINDOWS32
       if (getcwd_fs (current_directory, GET_PATH_MAX) == 0)