aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-inferior.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-12-26 11:05:57 -0700
committerTom Tromey <tom@tromey.com>2018-12-27 10:50:43 -0700
commit075c55e0cc0a68eeab777027213c2f545618e844 (patch)
treed5ff42efac40742af8ce1401ef36ae43fc4df79d /gdb/python/py-inferior.c
parent293bf1a719e88e063e75ae467c5aec101b59fbf6 (diff)
downloadbinutils-075c55e0cc0a68eeab777027213c2f545618e844.zip
binutils-075c55e0cc0a68eeab777027213c2f545618e844.tar.gz
binutils-075c55e0cc0a68eeab777027213c2f545618e844.tar.bz2
Remove more calls to xfree from Python
This changes the Python code to remove some more calls to xfree, in favor of self-managing data structures. Tested on x86-64 Fedora 28. gdb/ChangeLog 2018-12-27 Tom Tromey <tom@tromey.com> * python/python.c (python_interactive_command): Use std::string. (gdbpy_parameter): Likewise. * python/py-utils.c (unicode_to_encoded_string): Update comment. * python/py-symtab.c (salpy_str): Use PyString_FromFormat. * python/py-record-btrace.c (recpy_bt_insn_data): Use byte_vector. * python/py-objfile.c (objfpy_get_build_id): Use unique_xmalloc_ptr. * python/py-inferior.c (infpy_read_memory): Use unique_xmalloc_ptr. * python/py-cmd.c (gdbpy_parse_command_name): Use std::string.
Diffstat (limited to 'gdb/python/py-inferior.c')
-rw-r--r--gdb/python/py-inferior.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 7b378ca..f68f6ea 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -499,7 +499,7 @@ static PyObject *
infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
{
CORE_ADDR addr, length;
- gdb_byte *buffer = NULL;
+ gdb::unique_xmalloc_ptr<gdb_byte> buffer;
PyObject *addr_obj, *length_obj, *result;
static const char *keywords[] = { "address", "length", NULL };
@@ -513,13 +513,12 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
TRY
{
- buffer = (gdb_byte *) xmalloc (length);
+ buffer.reset ((gdb_byte *) xmalloc (length));
- read_memory (addr, buffer, length);
+ read_memory (addr, buffer.get (), length);
}
CATCH (except, RETURN_MASK_ALL)
{
- xfree (buffer);
GDB_PY_HANDLE_EXCEPTION (except);
}
END_CATCH
@@ -527,12 +526,9 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
gdbpy_ref<membuf_object> membuf_obj (PyObject_New (membuf_object,
&membuf_object_type));
if (membuf_obj == NULL)
- {
- xfree (buffer);
- return NULL;
- }
+ return NULL;
- membuf_obj->buffer = buffer;
+ membuf_obj->buffer = buffer.release ();
membuf_obj->addr = addr;
membuf_obj->length = length;