Message ID | 20180104014923.11899-4-jhb@FreeBSD.org |
---|---|
State | New |
Headers | show |
On 2018-01-03 08:49 PM, John Baldwin wrote: > Since xfree() always wraps free(), it is safe to use the xfree deleter > for buffers allocated by library routines such as kinfo_getvmmap() that > must be released via free(). > > gdb/ChangeLog: > > * fbsd-nat.c (struct free_deleter): Remove. > (fbsd_find_memory_regions): Use gdb::unique_xmalloc_ptr<>. > --- > gdb/ChangeLog | 5 +++++ > gdb/fbsd-nat.c | 10 +--------- > 2 files changed, 6 insertions(+), 9 deletions(-) > > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > index 804dd4f402..cdce396e9c 100644 > --- a/gdb/ChangeLog > +++ b/gdb/ChangeLog > @@ -1,3 +1,8 @@ > +2018-01-03 John Baldwin <jhb@FreeBSD.org> > + > + * fbsd-nat.c (struct free_deleter): Remove. > + (fbsd_find_memory_regions): Use gdb::unique_xmalloc_ptr<>. > + > 2018-01-03 John Baldwin <jhb@FreeBSD.org> > > * fbsd-nat.c (fbsd_pid_to_exec_file) [KERN_PROC_PATHNAME]: Return > diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c > index 7b1d1bf148..00e5cfb55c 100644 > --- a/gdb/fbsd-nat.c > +++ b/gdb/fbsd-nat.c > @@ -78,14 +78,6 @@ fbsd_pid_to_exec_file (struct target_ops *self, int pid) > } > > #ifdef HAVE_KINFO_GETVMMAP > -/* Deleter for std::unique_ptr that invokes free. */ > - > -template <typename T> > -struct free_deleter > -{ > - void operator() (T *ptr) const { free (ptr); } > -}; > - > /* Iterate over all the memory regions in the current inferior, > calling FUNC for each memory region. OBFD is passed as the last > argument to FUNC. */ > @@ -99,7 +91,7 @@ fbsd_find_memory_regions (struct target_ops *self, > uint64_t size; > int i, nitems; > > - std::unique_ptr<struct kinfo_vmentry, free_deleter<struct kinfo_vmentry>> > + gdb::unique_xmalloc_ptr<struct kinfo_vmentry> > vmentl (kinfo_getvmmap (pid, &nitems)); > if (vmentl == NULL) > perror_with_name (_("Couldn't fetch VM map entries.")); > LGTM, unless there's something I really havn't understood about xfree. Simon
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 804dd4f402..cdce396e9c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-01-03 John Baldwin <jhb@FreeBSD.org> + + * fbsd-nat.c (struct free_deleter): Remove. + (fbsd_find_memory_regions): Use gdb::unique_xmalloc_ptr<>. + 2018-01-03 John Baldwin <jhb@FreeBSD.org> * fbsd-nat.c (fbsd_pid_to_exec_file) [KERN_PROC_PATHNAME]: Return diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c index 7b1d1bf148..00e5cfb55c 100644 --- a/gdb/fbsd-nat.c +++ b/gdb/fbsd-nat.c @@ -78,14 +78,6 @@ fbsd_pid_to_exec_file (struct target_ops *self, int pid) } #ifdef HAVE_KINFO_GETVMMAP -/* Deleter for std::unique_ptr that invokes free. */ - -template <typename T> -struct free_deleter -{ - void operator() (T *ptr) const { free (ptr); } -}; - /* Iterate over all the memory regions in the current inferior, calling FUNC for each memory region. OBFD is passed as the last argument to FUNC. */ @@ -99,7 +91,7 @@ fbsd_find_memory_regions (struct target_ops *self, uint64_t size; int i, nitems; - std::unique_ptr<struct kinfo_vmentry, free_deleter<struct kinfo_vmentry>> + gdb::unique_xmalloc_ptr<struct kinfo_vmentry> vmentl (kinfo_getvmmap (pid, &nitems)); if (vmentl == NULL) perror_with_name (_("Couldn't fetch VM map entries."));