X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgo32-nat.c;h=41170066ce272e313ec511df71ec72bffd57e981;hb=00fdaf47d569ebbc021b5bdc8206b9c461387e44;hp=6668f06e4e4403cd46c41e34d25cedfe618c2b91;hpb=27e232885db363fb545fd2f450e72d929e59b8f6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c index 6668f06e4e..41170066ce 100644 --- a/gdb/go32-nat.c +++ b/gdb/go32-nat.c @@ -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)