From ec66d6ea54679d00c1f0d52a5a9fa0cbb8b86d47 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 6 May 2021 13:16:26 -0400 Subject: [PATCH] gdb: make inferior::args a unique_xmalloc_ptr Use unique_xmalloc_ptr to avoid manual memory management. gdb/ChangeLog: * inferior.h (class inferior) : Change type to unique_xmalloc_ptr. * inferior.c (inferior::~inferior): Don't free args. * infcmd.c (get_inferior_args): Adjust. (set_inferior_args): Adjust. Change-Id: I96300e59eb2faf2d80660416a8f5694d243a944e --- gdb/ChangeLog | 8 ++++++++ gdb/infcmd.c | 11 +++++++---- gdb/inferior.c | 1 - gdb/inferior.h | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 187249db47e..6633ac548d3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2021-05-06 Simon Marchi + + * inferior.h (class inferior) : Change type to + unique_xmalloc_ptr. + * inferior.c (inferior::~inferior): Don't free args. + * infcmd.c (get_inferior_args): Adjust. + (set_inferior_args): Adjust. + 2021-05-06 Andrew Burgess * guile/scm-breakpoint.c (bpscm_print_breakpoint_smob): Only print diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 5aa6b00f20f..5d9d79261ef 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -136,9 +136,9 @@ get_inferior_args (void) } if (current_inferior ()->args == NULL) - current_inferior ()->args = xstrdup (""); + current_inferior ()->args = make_unique_xstrdup (""); - return current_inferior ()->args; + return current_inferior ()->args.get (); } /* Set the arguments for the current inferior. Ownership of @@ -147,8 +147,11 @@ get_inferior_args (void) void set_inferior_args (const char *newargs) { - xfree (current_inferior ()->args); - current_inferior ()->args = newargs ? xstrdup (newargs) : NULL; + if (newargs != nullptr) + current_inferior ()->args = make_unique_xstrdup (newargs); + else + current_inferior ()->args.reset (); + current_inferior ()->argc = 0; current_inferior ()->argv = 0; } diff --git a/gdb/inferior.c b/gdb/inferior.c index df3b7bf81f0..a8779c354b5 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -75,7 +75,6 @@ inferior::~inferior () m_continuations.clear (); inferior_free_data (inf); - xfree (inf->args); target_desc_info_free (inf->tdesc_info); } diff --git a/gdb/inferior.h b/gdb/inferior.h index e0a7d622ccb..4a143c3a2b8 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -468,7 +468,7 @@ public: struct program_space *pspace = NULL; /* The arguments string to use when running. */ - char *args = NULL; + gdb::unique_xmalloc_ptr args; /* The size of elements in argv. */ int argc = 0; -- 2.30.2