This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Avoid manual resource management in py-framefilter.c
- From: Tom Tromey <tromey at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 27 Mar 2018 04:05:46 -0000
- Subject: [binutils-gdb] Avoid manual resource management in py-framefilter.c
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7a630bc2f99fcd55ddd83274574531d526ca1925
commit 7a630bc2f99fcd55ddd83274574531d526ca1925
Author: Tom Tromey <tom@tromey.com>
Date: Sun Apr 23 11:23:43 2017 -0600
Avoid manual resource management in py-framefilter.c
This patch removes the last bit of manual resource management from
py-framefilter.c. This will be useful in the next patch.
gdb/ChangeLog
2018-03-26 Tom Tromey <tom@tromey.com>
* python/py-framefilter.c (enumerate_args): Use
gdb::unique_xmalloc_ptr.
Diff:
---
gdb/ChangeLog | 5 +++++
gdb/python/py-framefilter.c | 20 +++++---------------
2 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ed5d5be..5cc8d9e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2018-03-26 Tom Tromey <tom@tromey.com>
+ * python/py-framefilter.c (enumerate_args): Use
+ gdb::unique_xmalloc_ptr.
+
+2018-03-26 Tom Tromey <tom@tromey.com>
+
* python/py-framefilter.c (py_print_frame): Return
EXT_LANG_BT_OK.
(gdbpy_apply_frame_filter): Update comment.
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
index 1dc15ae..dcac42d 100644
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
@@ -560,6 +560,9 @@ enumerate_args (PyObject *iter,
}
END_CATCH
+ gdb::unique_xmalloc_ptr<char> arg_holder (arg.error);
+ gdb::unique_xmalloc_ptr<char> entry_holder (entryarg.error);
+
/* The object has not provided a value, so this is a frame
argument to be read by GDB. In this case we have to
account for entry-values. */
@@ -571,11 +574,7 @@ enumerate_args (PyObject *iter,
args_type,
print_args_field,
NULL) == EXT_LANG_BT_ERROR)
- {
- xfree (arg.error);
- xfree (entryarg.error);
- return EXT_LANG_BT_ERROR;
- }
+ return EXT_LANG_BT_ERROR;
}
if (entryarg.entry_kind != print_entry_values_no)
@@ -589,8 +588,6 @@ enumerate_args (PyObject *iter,
}
CATCH (except, RETURN_MASK_ALL)
{
- xfree (arg.error);
- xfree (entryarg.error);
gdbpy_convert_exception (except);
return EXT_LANG_BT_ERROR;
}
@@ -600,15 +597,8 @@ enumerate_args (PyObject *iter,
if (py_print_single_arg (out, NULL, &entryarg, NULL, &opts,
args_type, print_args_field, NULL)
== EXT_LANG_BT_ERROR)
- {
- xfree (arg.error);
- xfree (entryarg.error);
- return EXT_LANG_BT_ERROR;
- }
+ return EXT_LANG_BT_ERROR;
}
-
- xfree (arg.error);
- xfree (entryarg.error);
}
else
{