diff options
author | Tom Tromey <tom@tromey.com> | 2018-12-27 11:53:20 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-01-03 14:49:18 -0700 |
commit | 2a3c71d68d452bb6b06d199d0eb7bc0cbc2b9b25 (patch) | |
tree | b66f2e202a390bbbcfa81c574d5388fcad12d4fa /gdb/python/py-progspace.c | |
parent | 5c329e6ab4c7bba9b83155571b150756210001df (diff) | |
download | binutils-2a3c71d68d452bb6b06d199d0eb7bc0cbc2b9b25.zip binutils-2a3c71d68d452bb6b06d199d0eb7bc0cbc2b9b25.tar.gz binutils-2a3c71d68d452bb6b06d199d0eb7bc0cbc2b9b25.tar.bz2 |
Remove more uses of explicit reference counting in Python
This changes some more place in the Python code to use gdbpy_ref
rather than explicit reference counting. While doing this I found a
latent bug in typy_fields_items -- it was not checking for errors in
one spot. I also changed valpy_dealloc to use Py_XDECREF rather than
an explicit "if".
gdb/ChangeLog
2019-01-03 Tom Tromey <tom@tromey.com>
* python/py-value.c (valpy_dealloc): Use Py_XDECREF.
* python/py-type.c (typy_fields_items): Use gdbpy_ref.
* python/py-progspace.c (pspy_set_printers): Use gdbpy_ref.
(pspy_set_frame_filters, pspy_set_frame_unwinders)
(pspy_set_type_printers): Likewise.
* python/py-function.c (fnpy_init): Use gdbpy_ref.
* python/py-cmd.c (cmdpy_init): Use gdbpy_ref.
* python/py-objfile.c (objfpy_set_printers): Use gdbpy_ref.
(objfpy_set_frame_filters, objfpy_set_frame_unwinders)
(objfpy_set_type_printers): Likewise.
Diffstat (limited to 'gdb/python/py-progspace.c')
-rw-r--r-- | gdb/python/py-progspace.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c index c55c432..4d0297b 100644 --- a/gdb/python/py-progspace.c +++ b/gdb/python/py-progspace.c @@ -164,7 +164,6 @@ pspy_get_printers (PyObject *o, void *ignore) static int pspy_set_printers (PyObject *o, PyObject *value, void *ignore) { - PyObject *tmp; pspace_object *self = (pspace_object *) o; if (! value) @@ -182,10 +181,9 @@ pspy_set_printers (PyObject *o, PyObject *value, void *ignore) } /* Take care in case the LHS and RHS are related somehow. */ - tmp = self->printers; + gdbpy_ref<> tmp (self->printers); Py_INCREF (value); self->printers = value; - Py_XDECREF (tmp); return 0; } @@ -205,7 +203,6 @@ pspy_get_frame_filters (PyObject *o, void *ignore) static int pspy_set_frame_filters (PyObject *o, PyObject *frame, void *ignore) { - PyObject *tmp; pspace_object *self = (pspace_object *) o; if (! frame) @@ -223,10 +220,9 @@ pspy_set_frame_filters (PyObject *o, PyObject *frame, void *ignore) } /* Take care in case the LHS and RHS are related somehow. */ - tmp = self->frame_filters; + gdbpy_ref<> tmp (self->frame_filters); Py_INCREF (frame); self->frame_filters = frame; - Py_XDECREF (tmp); return 0; } @@ -247,7 +243,6 @@ pspy_get_frame_unwinders (PyObject *o, void *ignore) static int pspy_set_frame_unwinders (PyObject *o, PyObject *unwinders, void *ignore) { - PyObject *tmp; pspace_object *self = (pspace_object *) o; if (!unwinders) @@ -265,10 +260,9 @@ pspy_set_frame_unwinders (PyObject *o, PyObject *unwinders, void *ignore) } /* Take care in case the LHS and RHS are related somehow. */ - tmp = self->frame_unwinders; + gdbpy_ref<> tmp (self->frame_unwinders); Py_INCREF (unwinders); self->frame_unwinders = unwinders; - Py_XDECREF (tmp); return 0; } @@ -300,7 +294,6 @@ pspy_get_xmethods (PyObject *o, void *ignore) static int pspy_set_type_printers (PyObject *o, PyObject *value, void *ignore) { - PyObject *tmp; pspace_object *self = (pspace_object *) o; if (! value) @@ -318,10 +311,9 @@ pspy_set_type_printers (PyObject *o, PyObject *value, void *ignore) } /* Take care in case the LHS and RHS are related somehow. */ - tmp = self->type_printers; + gdbpy_ref<> tmp (self->type_printers); Py_INCREF (value); self->type_printers = value; - Py_XDECREF (tmp); return 0; } |