Use gdbpy_ref in py-param.c

This changes py-param.c to use gdbpy_ref in a couple more spots.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-param.c (get_doc_string, compute_enum_values): Use
	gdbpy_ref.
This commit is contained in:
Tom Tromey 2016-11-20 10:34:34 -07:00
parent 9205649a38
commit 97d83487d5
2 changed files with 13 additions and 10 deletions

View file

@ -1,3 +1,8 @@
2017-01-10 Tom Tromey <tom@tromey.com>
* python/py-param.c (get_doc_string, compute_enum_values): Use
gdbpy_ref.
2017-01-10 Tom Tromey <tom@tromey.com> 2017-01-10 Tom Tromey <tom@tromey.com>
* python/py-inferior.c (find_thread_object, build_inferior_list): * python/py-inferior.c (find_thread_object, build_inferior_list):

View file

@ -307,15 +307,14 @@ get_doc_string (PyObject *object, PyObject *attr)
if (PyObject_HasAttr (object, attr)) if (PyObject_HasAttr (object, attr))
{ {
PyObject *ds_obj = PyObject_GetAttr (object, attr); gdbpy_ref ds_obj (PyObject_GetAttr (object, attr));
if (ds_obj && gdbpy_is_string (ds_obj)) if (ds_obj != NULL && gdbpy_is_string (ds_obj.get ()))
{ {
result = python_string_to_host_string (ds_obj); result = python_string_to_host_string (ds_obj.get ());
if (result == NULL) if (result == NULL)
gdbpy_print_stack (); gdbpy_print_stack ();
} }
Py_XDECREF (ds_obj);
} }
if (! result) if (! result)
result.reset (xstrdup (_("This command is not documented."))); result.reset (xstrdup (_("This command is not documented.")));
@ -587,23 +586,22 @@ compute_enum_values (parmpy_object *self, PyObject *enum_values)
for (i = 0; i < size; ++i) for (i = 0; i < size; ++i)
{ {
PyObject *item = PySequence_GetItem (enum_values, i); gdbpy_ref item (PySequence_GetItem (enum_values, i));
if (! item) if (item == NULL)
{ {
do_cleanups (back_to); do_cleanups (back_to);
return 0; return 0;
} }
if (! gdbpy_is_string (item)) if (! gdbpy_is_string (item.get ()))
{ {
Py_DECREF (item);
do_cleanups (back_to); do_cleanups (back_to);
PyErr_SetString (PyExc_RuntimeError, PyErr_SetString (PyExc_RuntimeError,
_("The enumeration item not a string.")); _("The enumeration item not a string."));
return 0; return 0;
} }
self->enumeration[i] = python_string_to_host_string (item).release (); self->enumeration[i]
Py_DECREF (item); = python_string_to_host_string (item.get ()).release ();
if (self->enumeration[i] == NULL) if (self->enumeration[i] == NULL)
{ {
do_cleanups (back_to); do_cleanups (back_to);