* go32-nat.c: (go32_wait): If child_cwd[] is empty, initialize
authorEli Zaretskii <eliz@gnu.org>
Sun, 6 Aug 2000 07:19:38 +0000 (07:19 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sun, 6 Aug 2000 07:19:38 +0000 (07:19 +0000)
it to GDB's current directory.
(go32_create_inferior, init_go32_ops): Initialize child_cwd[] to
an empty string, to signal an uninitialized value.
From Robert Hoehne <robert.hoehne@gmx.net>.

gdb/ChangeLog
gdb/go32-nat.c

index bdaaa2ae717ab56a120b26a79d74d3e766adeeb2..3e711dcf9f0a01086e6f99838a93cba88ee35615 100644 (file)
@@ -1,3 +1,11 @@
+2000-08-05  Eli Zaretskii <eliz@is.elta.co.il>
+
+       * go32-nat.c: (go32_wait): If child_cwd[] is empty, initialize
+       it to GDB's current directory.
+       (go32_create_inferior, init_go32_ops): Initialize child_cwd[] to
+       an empty string, to signal an uninitialized value.
+       From Robert Hoehne <robert.hoehne@gmx.net>.
+
 2000-08-04  Kevin Buettner  <kevinb@redhat.com>
 
        * symtab.h (fixup_psymbol_section): Declare.
index 6668f06e4e4403cd46c41e34d25cedfe618c2b91..41170066ce272e313ec511df71ec72bffd57e981 100644 (file)
@@ -389,6 +389,13 @@ go32_wait (int pid ATTRIBUTE_UNUSED, struct target_waitstatus *status)
      point of changing back to where GDB thinks is its cwd, when we
      return control to the debugger, but restore child's cwd before we
      run it.  */
+  /* Initialize child_cwd, before the first call to run_child and not
+     in the initialization, so the child get also the changed directory
+     set with the gdb-command "cd ..." */
+  if (!*child_cwd)
+    /* Initialize child's cwd with the current one.  */
+    getcwd (child_cwd, sizeof (child_cwd));
+    
   chdir (child_cwd);
 
 #if __DJGPP_MINOR__ < 3
@@ -603,6 +610,11 @@ go32_create_inferior (char *exec_file, char *args, char **env)
     }
   resume_signal = -1;
   resume_is_step = 0;
+
+  /* Initialize child's cwd as empty to be initialized when starting
+     the child.  */
+  *child_cwd = 0;
+
   /* Init command line storage.  */
   if (redir_debug_init (&child_cmd) == -1)
     internal_error ("Cannot allocate redirection storage: not enough memory.\n");
@@ -1224,8 +1236,9 @@ init_go32_ops (void)
   go32_ops.to_has_execution = 1;
   go32_ops.to_magic = OPS_MAGIC;
 
-  /* Initialize child's cwd with the current one.  */
-  getcwd (child_cwd, sizeof (child_cwd));
+  /* Initialize child's cwd as empty to be initialized when starting
+     the child.  */
+  *child_cwd = 0;
 
   /* Initialize child's command line storage.  */
   if (redir_debug_init (&child_cmd) == -1)