aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-progspace.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-09-12 21:44:19 -0600
committerTom Tromey <tom@tromey.com>2018-09-16 07:25:56 -0600
commit3c7aa30778a1615d88c13508c04138ef2499112d (patch)
treecdfc313d4149467e51b5495cd1e41a416b9653be /gdb/python/py-progspace.c
parent8743a9cdd20055e02a20c24c37b5312e3e626691 (diff)
downloadgdb-3c7aa30778a1615d88c13508c04138ef2499112d.zip
gdb-3c7aa30778a1615d88c13508c04138ef2499112d.tar.gz
gdb-3c7aa30778a1615d88c13508c04138ef2499112d.tar.bz2
Change pspace_to_pspace_object to return a new reference
This changes pspace_to_pspace_object to return a new reference and fixes up all the callers. gdb/ChangeLog 2018-09-16 Tom Tromey <tom@tromey.com> * python/py-inferior.c (infpy_get_progspace): Update. * python/python-internal.h (pspace_to_pspace_object): Change return type. * python/py-newobjfileevent.c (create_clear_objfiles_event_object): Update. * python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): Update. * python/python.c (gdbpy_get_current_progspace): Update. (gdbpy_progspaces): Update. * python/py-progspace.c (pspace_to_pspace_object): Return a new reference. * python/py-objfile.c (objfpy_get_progspace): Update. * python/py-prettyprint.c (find_pretty_printer_from_progspace): Update.
Diffstat (limited to 'gdb/python/py-progspace.c')
-rw-r--r--gdb/python/py-progspace.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index b88ad3c..3c46847 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -492,30 +492,31 @@ py_free_pspace (struct program_space *pspace, void *datum)
object->pspace = NULL;
}
-/* Return a borrowed reference to the Python object of type Pspace
+/* Return a new reference to the Python object of type Pspace
representing PSPACE. If the object has already been created,
return it. Otherwise, create it. Return NULL and set the Python
error on failure. */
-PyObject *
+gdbpy_ref<>
pspace_to_pspace_object (struct program_space *pspace)
{
- gdbpy_ref<pspace_object> object
- ((pspace_object *) program_space_data (pspace, pspy_pspace_data_key));
- if (object == NULL)
+ PyObject *result
+ ((PyObject *) program_space_data (pspace, pspy_pspace_data_key));
+ if (result == NULL)
{
- object.reset (PyObject_New (pspace_object, &pspace_object_type));
- if (object != NULL)
- {
- if (!pspy_initialize (object.get ()))
- return NULL;
+ gdbpy_ref<pspace_object> object
+ ((pspace_object *) PyObject_New (pspace_object, &pspace_object_type));
+ if (object == NULL)
+ return NULL;
+ if (!pspy_initialize (object.get ()))
+ return NULL;
- object->pspace = pspace;
- set_program_space_data (pspace, pspy_pspace_data_key, object.get ());
- }
+ object->pspace = pspace;
+ set_program_space_data (pspace, pspy_pspace_data_key, object.get ());
+ result = (PyObject *) object.release ();
}
- return (PyObject *) object.release ();
+ return gdbpy_ref<>::new_reference (result);
}
int