diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/cli/cli-cmds.c | 17 | ||||
-rw-r--r-- | gdb/main.c | 5 | ||||
-rw-r--r-- | gdb/mi/mi-cmd-env.c | 7 | ||||
-rw-r--r-- | gdb/top.c | 3 | ||||
-rw-r--r-- | gdb/top.h | 1 |
6 files changed, 28 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1bbf2b8..54eadae 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,15 @@ 2017-09-22 Sergio Durigan Junior <sergiodj@redhat.com> + * cli/cli-cmds.c (pwd_command): Use "getcwd (NULL, 0)". + (cd_command): Likewise. Free "current_directory" before + assigning to it. + * main.c (captured_main_1): Use "getcwd (NULL, 0)". + * mi/mi-cmd-env.c (mi_cmd_env_pwd): Likewise. + * top.c (gdb_dirbuf): Remove global declaration. + * top.h (gdb_dirbuf): Likewise. + +2017-09-22 Sergio Durigan Junior <sergiodj@redhat.com> + * gnulib/aclocal.m4: Regenerate. * gnulib/config.in: Regenerate. * gnulib/configure: Regenerate. diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 260fd3f..cbafb13 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -384,13 +384,16 @@ pwd_command (char *args, int from_tty) { if (args) error (_("The \"pwd\" command does not take an argument: %s"), args); - if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf))) + + gdb::unique_xmalloc_ptr<char> cwd (getcwd (NULL, 0)); + + if (cwd == NULL) error (_("Error finding name of working directory: %s"), safe_strerror (errno)); - if (strcmp (gdb_dirbuf, current_directory) != 0) + if (strcmp (cwd.get (), current_directory) != 0) printf_unfiltered (_("Working directory %s\n (canonically %s).\n"), - current_directory, gdb_dirbuf); + current_directory, cwd.get ()); else printf_unfiltered (_("Working directory %s.\n"), current_directory); } @@ -418,7 +421,8 @@ cd_command (char *dir, int from_tty) /* There's too much mess with DOSish names like "d:", "d:.", "d:./foo" etc. Instead of having lots of special #ifdef'ed code, simply get the canonicalized name of the current directory. */ - dir = getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)); + gdb::unique_xmalloc_ptr<char> cwd (getcwd (NULL, 0)); + dir = cwd.get (); #endif len = strlen (dir); @@ -436,7 +440,10 @@ cd_command (char *dir, int from_tty) dir_holder.reset (savestring (dir, len)); if (IS_ABSOLUTE_PATH (dir_holder.get ())) - current_directory = dir_holder.release (); + { + xfree (current_directory); + current_directory = dir_holder.release (); + } else { if (IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])) @@ -549,11 +549,10 @@ captured_main_1 (struct captured_main_args *context) (xstrprintf ("%s: warning: ", gdb_program_name)); warning_pre_print = tmp_warn_preprint.get (); - if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf))) + current_directory = getcwd (NULL, 0); + if (current_directory == NULL) perror_warning_with_name (_("error finding working directory")); - current_directory = gdb_dirbuf; - /* Set the sysroot path. */ gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE); diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c index 977b6e2..0d08bb8 100644 --- a/gdb/mi/mi-cmd-env.c +++ b/gdb/mi/mi-cmd-env.c @@ -74,11 +74,12 @@ mi_cmd_env_pwd (const char *command, char **argv, int argc) /* Otherwise the mi level is 2 or higher. */ - if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf))) + gdb::unique_xmalloc_ptr<char> cwd (getcwd (NULL, 0)); + if (cwd == NULL) error (_("-environment-pwd: error finding name of working directory: %s"), safe_strerror (errno)); - - uiout->field_string ("cwd", gdb_dirbuf); + + uiout->field_string ("cwd", cwd.get ()); } /* Change working directory. */ @@ -133,9 +133,6 @@ show_confirm (struct ui_file *file, int from_tty, char *current_directory; -/* The directory name is actually stored here (usually). */ -char gdb_dirbuf[1024]; - /* The last command line executed on the console. Used for command repetitions. */ char *saved_command_line; @@ -219,7 +219,6 @@ extern void ui_unregister_input_event_handler (struct ui *ui); /* From top.c. */ extern char *saved_command_line; extern int confirm; -extern char gdb_dirbuf[1024]; extern int inhibit_gdbinit; extern const char gdbinit[]; |