From 6eecf35f97e1d37e49e385ba599797dd1c8afd1f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sun, 13 Aug 2017 14:34:59 -0600 Subject: [PATCH] Use unique_xmalloc_ptr in cd_command Change cd_command to use unique_xmalloc_ptr, removing a cleanup. ChangeLog 2017-09-03 Tom Tromey * cli/cli-cmds.c (cd_command): Use gdb::unique_xmalloc_ptr. --- gdb/ChangeLog | 4 ++++ gdb/cli/cli-cmds.c | 20 +++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8d75d48406..6d6dad15ff 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2017-09-03 Tom Tromey + + * cli/cli-cmds.c (cd_command): Use gdb::unique_xmalloc_ptr. + 2017-09-03 Tom Tromey * mi/mi-interp.c (mi_cmd_interpreter_exec): Use std::string. diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index d4dc53904c..8221747ae4 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -398,14 +398,14 @@ cd_command (char *dir, int from_tty) /* Found something other than leading repetitions of "/..". */ int found_real_path; char *p; - struct cleanup *cleanup; /* If the new directory is absolute, repeat is a no-op; if relative, repeat might be useful but is more likely to be a mistake. */ dont_repeat (); - dir = tilde_expand (dir != NULL ? dir : "~"); - cleanup = make_cleanup (xfree, dir); + gdb::unique_xmalloc_ptr dir_holder + (tilde_expand (dir != NULL ? dir : "~")); + dir = dir_holder.get (); if (chdir (dir) < 0) perror_with_name (dir); @@ -430,17 +430,17 @@ cd_command (char *dir, int from_tty) len--; } - dir = savestring (dir, len); - if (IS_ABSOLUTE_PATH (dir)) - current_directory = dir; + dir_holder.reset (savestring (dir, len)); + if (IS_ABSOLUTE_PATH (dir_holder.get ())) + current_directory = dir_holder.release (); else { if (IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])) - current_directory = concat (current_directory, dir, (char *)NULL); + current_directory = concat (current_directory, dir_holder.get (), + (char *) NULL); else current_directory = concat (current_directory, SLASH_STRING, - dir, (char *)NULL); - xfree (dir); + dir_holder.get (), (char *) NULL); } /* Now simplify any occurrences of `.' and `..' in the pathname. */ @@ -489,8 +489,6 @@ cd_command (char *dir, int from_tty) if (from_tty) pwd_command ((char *) 0, 1); - - do_cleanups (cleanup); } /* Show the current value of the 'script-extension' option. */