diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2020-06-25 14:44:13 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2020-06-25 14:44:35 -0400 |
commit | 277474eea03e0f77a9d37c69dfab3f0c41812348 (patch) | |
tree | 5e415b1644e846c6076f19f4864301301270fb1a | |
parent | d73be6116811aeaedd1863c2597ede78be3cf4e5 (diff) | |
download | gdb-277474eea03e0f77a9d37c69dfab3f0c41812348.zip gdb-277474eea03e0f77a9d37c69dfab3f0c41812348.tar.gz gdb-277474eea03e0f77a9d37c69dfab3f0c41812348.tar.bz2 |
gdb: make inferior::terminal a unique ptr
This changes the inferior::terminal field to be a unique pointer, so its
deallocation is automatically managed.
gdb/ChangeLog:
* inferior.h (struct inferior) <terminal>: Change type to
gdb::unique_xmalloc_ptr<char>.
* inferior.c (inferior::~inferior): Don't free inf->terminal.
* infcmd.c (set_inferior_io_terminal): Don't free terminal
field, adjust to unique pointer.
(get_inferior_io_terminal): Adjust to unique pointer.
Change-Id: Iedb6459b4f9eeae812b0cb9d514b5707d5107cdb
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/infcmd.c | 6 | ||||
-rw-r--r-- | gdb/inferior.c | 1 | ||||
-rw-r--r-- | gdb/inferior.h | 3 |
4 files changed, 13 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0a36c6b..d9b6a49 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2020-06-25 Simon Marchi <simon.marchi@efficios.com> + + * inferior.h (struct inferior) <terminal>: Change type to + gdb::unique_xmalloc_ptr<char>. + * inferior.c (inferior::~inferior): Don't free inf->terminal. + * infcmd.c (set_inferior_io_terminal): Don't free terminal + field, adjust to unique pointer. + (get_inferior_io_terminal): Adjust to unique pointer. + 2020-06-25 Andrew Burgess <andrew.burgess@embecosm.com> * riscv-tdep.c (riscv_print_registers_info): Loop over all diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 42b050d..48d6a91 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -108,10 +108,8 @@ int stopped_by_random_signal; void set_inferior_io_terminal (const char *terminal_name) { - xfree (current_inferior ()->terminal); - if (terminal_name != NULL && *terminal_name != '\0') - current_inferior ()->terminal = xstrdup (terminal_name); + current_inferior ()->terminal.reset (xstrdup (terminal_name)); else current_inferior ()->terminal = NULL; } @@ -119,7 +117,7 @@ set_inferior_io_terminal (const char *terminal_name) const char * get_inferior_io_terminal (void) { - return current_inferior ()->terminal; + return current_inferior ()->terminal.get (); } static void diff --git a/gdb/inferior.c b/gdb/inferior.c index 2f4ced0..d3bece0 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -79,7 +79,6 @@ inferior::~inferior () discard_all_inferior_continuations (inf); inferior_free_data (inf); xfree (inf->args); - xfree (inf->terminal); target_desc_info_free (inf->tdesc_info); } diff --git a/gdb/inferior.h b/gdb/inferior.h index 95af474..5002b0b 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -52,6 +52,7 @@ struct thread_info; #include "symfile-add-flags.h" #include "gdbsupport/refcounted-object.h" #include "gdbsupport/forward-scope-exit.h" +#include "gdbsupport/gdb_unique_ptr.h" #include "gdbsupport/common-inferior.h" #include "gdbthread.h" @@ -456,7 +457,7 @@ public: gdb::unique_xmalloc_ptr<char> cwd; /* The name of terminal device to use for I/O. */ - char *terminal = NULL; + gdb::unique_xmalloc_ptr<char> terminal; /* The terminal state as set by the last target_terminal::terminal_* call. */ |