aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/infcmd.c6
-rw-r--r--gdb/inferior.c1
-rw-r--r--gdb/inferior.h3
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. */