diff options
author | Tom Tromey <tom@tromey.com> | 2018-09-12 21:44:19 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-09-16 07:25:56 -0600 |
commit | 3c7aa30778a1615d88c13508c04138ef2499112d (patch) | |
tree | cdfc313d4149467e51b5495cd1e41a416b9653be /gdb/python/py-progspace.c | |
parent | 8743a9cdd20055e02a20c24c37b5312e3e626691 (diff) | |
download | gdb-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.c | 29 |
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 |