aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-inferior.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-01-11 16:28:43 -0700
committerTom Tromey <tom@tromey.com>2017-02-10 12:24:32 -0700
commit88b6faea9953505e9e8a7a77995c7db5dfb6ac19 (patch)
tree8c37cbea07dded189647be98286894aa9e172579 /gdb/python/py-inferior.c
parent7780f18678aeb553778633aeb50f41694f55bf27 (diff)
downloadgdb-88b6faea9953505e9e8a7a77995c7db5dfb6ac19.zip
gdb-88b6faea9953505e9e8a7a77995c7db5dfb6ac19.tar.gz
gdb-88b6faea9953505e9e8a7a77995c7db5dfb6ac19.tar.bz2
Use gdbpy_ref to simplify some logic
This uses the new gdbpy_ref template to simplify logic in various parts of the Python layer; for example removing repeated error code or removing gotos. gdb/ChangeLog 2017-02-10 Tom Tromey <tom@tromey.com> * python/py-cmd.c (cmdpy_destroyer): Use gdbpy_ref. * python/py-breakpoint.c (gdbpy_breakpoint_deleted): Use gdbpy_ref. * python/py-type.c (field_new): Use gdbpy_ref. * python/py-symtab.c (symtab_and_line_to_sal_object): Use gdbpy_ref. * python/py-progspace.c (pspy_new): Use gdbpy_ref. (py_free_pspace): Likewise. (pspace_to_pspace_object): Likewise. * python/py-objfile.c (objfpy_new): Use gdbpy_ref. (py_free_objfile): Likewise. (objfile_to_objfile_object): Likewise. * python/py-inferior.c (delete_thread_object): Use gdbpy_ref. (infpy_read_memory): Likewise. (py_free_inferior): Likewise. * python/py-evtregistry.c (create_eventregistry_object): Use gdbpy_ref. * python/py-event.c (create_event_object): Use gdbpy_ref.
Diffstat (limited to 'gdb/python/py-inferior.c')
-rw-r--r--gdb/python/py-inferior.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 0118caa..46a0aad 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -300,7 +300,6 @@ add_thread_object (struct thread_info *tp)
static void
delete_thread_object (struct thread_info *tp, int ignore)
{
- inferior_object *inf_obj;
struct threadlist_entry **entry, *tmp;
if (!gdb_python_initialized)
@@ -308,9 +307,9 @@ delete_thread_object (struct thread_info *tp, int ignore)
gdbpy_enter enter_py (python_gdbarch, python_language);
- inf_obj
- = (inferior_object *) find_inferior_object (ptid_get_pid (tp->ptid));
- if (!inf_obj)
+ gdbpy_ref<inferior_object> inf_obj
+ ((inferior_object *) find_inferior_object (ptid_get_pid (tp->ptid)));
+ if (inf_obj == NULL)
return;
/* Find thread entry in its inferior's thread_list. */
@@ -320,10 +319,7 @@ delete_thread_object (struct thread_info *tp, int ignore)
break;
if (!*entry)
- {
- Py_DECREF (inf_obj);
- return;
- }
+ return;
tmp = *entry;
tmp->thread_obj->thread = NULL;
@@ -332,7 +328,6 @@ delete_thread_object (struct thread_info *tp, int ignore)
inf_obj->nthreads--;
Py_DECREF (tmp->thread_obj);
- Py_DECREF (inf_obj);
xfree (tmp);
}
@@ -439,7 +434,6 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
{
CORE_ADDR addr, length;
gdb_byte *buffer = NULL;
- membuf_object *membuf_obj;
PyObject *addr_obj, *length_obj, *result;
static char *keywords[] = { "address", "length", NULL };
@@ -464,7 +458,8 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
}
END_CATCH
- membuf_obj = PyObject_New (membuf_object, &membuf_object_type);
+ gdbpy_ref<membuf_object> membuf_obj (PyObject_New (membuf_object,
+ &membuf_object_type));
if (membuf_obj == NULL)
{
xfree (buffer);
@@ -476,12 +471,11 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
membuf_obj->length = length;
#ifdef IS_PY3K
- result = PyMemoryView_FromObject ((PyObject *) membuf_obj);
+ result = PyMemoryView_FromObject ((PyObject *) membuf_obj.get ());
#else
- result = PyBuffer_FromReadWriteObject ((PyObject *) membuf_obj, 0,
+ result = PyBuffer_FromReadWriteObject ((PyObject *) membuf_obj.get (), 0,
Py_END_OF_BUFFER);
#endif
- Py_DECREF (membuf_obj);
return result;
}
@@ -769,7 +763,7 @@ infpy_dealloc (PyObject *obj)
static void
py_free_inferior (struct inferior *inf, void *datum)
{
- inferior_object *inf_obj = (inferior_object *) datum;
+ gdbpy_ref<inferior_object> inf_obj ((inferior_object *) datum);
struct threadlist_entry *th_entry, *th_tmp;
if (!gdb_python_initialized)
@@ -790,8 +784,6 @@ py_free_inferior (struct inferior *inf, void *datum)
}
inf_obj->nthreads = 0;
-
- Py_DECREF ((PyObject *) inf_obj);
}
/* Implementation of gdb.selected_inferior() -> gdb.Inferior.