aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-infthread.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2019-06-28 08:32:28 -0600
committerTom Tromey <tromey@adacore.com>2019-07-10 12:24:22 -0600
commit05b08ac1608c8355201db21fe4c871677466f0d5 (patch)
tree3650b8b89370b689d1505e74a3035a61f7360b60 /gdb/python/py-infthread.c
parent32372d80caba2e223157eca6db2fb0e65369c3c7 (diff)
downloadbinutils-05b08ac1608c8355201db21fe4c871677466f0d5.zip
binutils-05b08ac1608c8355201db21fe4c871677466f0d5.tar.gz
binutils-05b08ac1608c8355201db21fe4c871677466f0d5.tar.bz2
Reduce manual reference counting in py-inferior.c
This patch changes py-inferior.c to use gdbpy_ref<> when possible, reducing the amount of manual reference counting. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-07-10 Tom Tromey <tromey@adacore.com> * python/python-internal.h (create_thread_object): Return gdbpy_ref. * python/py-infthread.c (create_thread_object): Return gdbpy_ref. * python/py-inferior.c (struct threadlist_entry): Add constructor. <thread_obj>: Now a gdbpy_ref. (thread_to_thread_object): Update. (add_thread_object): Use new. (delete_thread_object): Use delete. (infpy_threads): Update. (py_free_inferior): Update. Construct "inf_obj" after acquiring GIL.
Diffstat (limited to 'gdb/python/py-infthread.c')
-rw-r--r--gdb/python/py-infthread.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c
index 8c556f9..f1c316c 100644
--- a/gdb/python/py-infthread.c
+++ b/gdb/python/py-infthread.c
@@ -36,17 +36,17 @@ extern PyTypeObject thread_object_type
} \
} while (0)
-thread_object *
+gdbpy_ref<thread_object>
create_thread_object (struct thread_info *tp)
{
- thread_object *thread_obj;
+ gdbpy_ref<thread_object> thread_obj;
gdbpy_ref<inferior_object> inf_obj = inferior_to_inferior_object (tp->inf);
if (inf_obj == NULL)
return NULL;
- thread_obj = PyObject_New (thread_object, &thread_object_type);
- if (!thread_obj)
+ thread_obj.reset (PyObject_New (thread_object, &thread_object_type));
+ if (thread_obj == NULL)
return NULL;
thread_obj->thread = tp;