diff options
author | Tom Tromey <tom@tromey.com> | 2016-11-06 21:21:14 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-01-10 19:13:31 -0700 |
commit | 80bd970a4b1388fc4373b3e087006e6c93d71f60 (patch) | |
tree | b2fabbae4cc9096e06d1f4db72600bbdd36a3f63 /gdb/python/py-function.c | |
parent | d1b3de2e43380a0c51772a40315cd2268573d985 (diff) | |
download | gdb-80bd970a4b1388fc4373b3e087006e6c93d71f60.zip gdb-80bd970a4b1388fc4373b3e087006e6c93d71f60.tar.gz gdb-80bd970a4b1388fc4373b3e087006e6c93d71f60.tar.bz2 |
Use gdbpy_ref in py-function.c
This changes some code in py-function.c to use gdbpy_ref.
2017-01-10 Tom Tromey <tom@tromey.com>
* python/py-function.c (convert_values_to_python, fnpy_init): Use
gdbpy_ref.
Diffstat (limited to 'gdb/python/py-function.c')
-rw-r--r-- | gdb/python/py-function.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/gdb/python/py-function.c b/gdb/python/py-function.c index 048e343..8db1ea6 100644 --- a/gdb/python/py-function.c +++ b/gdb/python/py-function.c @@ -27,6 +27,7 @@ #include "completer.h" #include "expression.h" #include "language.h" +#include "py-ref.h" extern PyTypeObject fnpy_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("PyObject"); @@ -37,22 +38,19 @@ static PyObject * convert_values_to_python (int argc, struct value **argv) { int i; - PyObject *result = PyTuple_New (argc); + gdbpy_ref result (PyTuple_New (argc)); - if (! result) + if (result == NULL) return NULL; for (i = 0; i < argc; ++i) { - PyObject *elt = value_to_value_object (argv[i]); - if (! elt) - { - Py_DECREF (result); - return NULL; - } - PyTuple_SetItem (result, i, elt); + gdbpy_ref elt (value_to_value_object (argv[i])); + if (elt == NULL) + return NULL; + PyTuple_SetItem (result.get (), i, elt.release ()); } - return result; + return result.release (); } /* Call a Python function object's invoke method. */ @@ -172,21 +170,18 @@ fnpy_init (PyObject *self, PyObject *args, PyObject *kwds) if (PyObject_HasAttrString (self, "__doc__")) { - PyObject *ds_obj = PyObject_GetAttrString (self, "__doc__"); + gdbpy_ref ds_obj (PyObject_GetAttrString (self, "__doc__")); if (ds_obj != NULL) { - if (gdbpy_is_string (ds_obj)) + if (gdbpy_is_string (ds_obj.get ())) { - docstring = python_string_to_host_string (ds_obj); + docstring = python_string_to_host_string (ds_obj.get ()); if (docstring == NULL) { Py_DECREF (self); - Py_DECREF (ds_obj); return -1; } } - - Py_DECREF (ds_obj); } } if (! docstring) |