diff options
author | Tom Tromey <tromey@adacore.com> | 2019-06-28 08:32:28 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-07-10 12:24:22 -0600 |
commit | 05b08ac1608c8355201db21fe4c871677466f0d5 (patch) | |
tree | 3650b8b89370b689d1505e74a3035a61f7360b60 /gdb/python/py-infthread.c | |
parent | 32372d80caba2e223157eca6db2fb0e65369c3c7 (diff) | |
download | binutils-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.c | 8 |
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; |