Change objfile_to_objfile_object to return a new reference
This changes objfile_to_objfile_object to return a new references and fixes up all the uses. gdb/ChangeLog 2018-09-16 Tom Tromey <tom@tromey.com> * python/py-progspace.c (pspy_get_objfiles): Update. * python/python-internal.h (objfile_to_objfile_object): Change return type. * python/py-newobjfileevent.c (create_new_objfile_event_object): Update. * python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): Update. * python/python.c (gdbpy_get_current_objfile): Update. (gdbpy_objfiles): Update. * python/py-objfile.c (objfpy_get_owner, gdbpy_lookup_objfile): Update. (objfile_to_objfile_object): Return a new reference. * python/py-symtab.c (stpy_get_objfile): Update. * python/py-prettyprint.c (find_pretty_printer_from_objfiles): Update.
This commit is contained in:
parent
3c7aa30778
commit
0a9db5ad8a
9 changed files with 51 additions and 51 deletions
|
@ -1,3 +1,21 @@
|
|||
2018-09-16 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* python/py-progspace.c (pspy_get_objfiles): Update.
|
||||
* python/python-internal.h (objfile_to_objfile_object): Change
|
||||
return type.
|
||||
* python/py-newobjfileevent.c (create_new_objfile_event_object):
|
||||
Update.
|
||||
* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers):
|
||||
Update.
|
||||
* python/python.c (gdbpy_get_current_objfile): Update.
|
||||
(gdbpy_objfiles): Update.
|
||||
* python/py-objfile.c (objfpy_get_owner, gdbpy_lookup_objfile):
|
||||
Update.
|
||||
(objfile_to_objfile_object): Return a new reference.
|
||||
* python/py-symtab.c (stpy_get_objfile): Update.
|
||||
* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
|
||||
Update.
|
||||
|
||||
2018-09-16 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* python/py-inferior.c (infpy_get_progspace): Update.
|
||||
|
|
|
@ -28,12 +28,10 @@ create_new_objfile_event_object (struct objfile *objfile)
|
|||
if (objfile_event == NULL)
|
||||
return NULL;
|
||||
|
||||
/* Note that objfile_to_objfile_object returns a borrowed reference,
|
||||
so we don't need a decref here. */
|
||||
PyObject *py_objfile = objfile_to_objfile_object (objfile);
|
||||
if (!py_objfile || evpy_add_attribute (objfile_event.get (),
|
||||
gdbpy_ref<> py_objfile = objfile_to_objfile_object (objfile);
|
||||
if (py_objfile == NULL || evpy_add_attribute (objfile_event.get (),
|
||||
"new_objfile",
|
||||
py_objfile) < 0)
|
||||
py_objfile.get ()) < 0)
|
||||
return NULL;
|
||||
|
||||
return objfile_event;
|
||||
|
|
|
@ -115,12 +115,7 @@ objfpy_get_owner (PyObject *self, void *closure)
|
|||
|
||||
owner = objfile->separate_debug_objfile_backlink;
|
||||
if (owner != NULL)
|
||||
{
|
||||
PyObject *result = objfile_to_objfile_object (owner);
|
||||
|
||||
Py_XINCREF (result);
|
||||
return result;
|
||||
}
|
||||
return objfile_to_objfile_object (owner).release ();
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
|
@ -602,12 +597,7 @@ gdbpy_lookup_objfile (PyObject *self, PyObject *args, PyObject *kw)
|
|||
objfile = objfpy_lookup_objfile_by_name (name);
|
||||
|
||||
if (objfile != NULL)
|
||||
{
|
||||
PyObject *result = objfile_to_objfile_object (objfile);
|
||||
|
||||
Py_XINCREF (result);
|
||||
return result;
|
||||
}
|
||||
return objfile_to_objfile_object (objfile).release ();
|
||||
|
||||
PyErr_SetString (PyExc_ValueError, _("Objfile not found."));
|
||||
return NULL;
|
||||
|
@ -625,30 +615,31 @@ py_free_objfile (struct objfile *objfile, void *datum)
|
|||
object->objfile = NULL;
|
||||
}
|
||||
|
||||
/* Return a borrowed reference to the Python object of type Objfile
|
||||
/* Return a new reference to the Python object of type Objfile
|
||||
representing OBJFILE. If the object has already been created,
|
||||
return it. Otherwise, create it. Return NULL and set the Python
|
||||
error on failure. */
|
||||
|
||||
PyObject *
|
||||
gdbpy_ref<>
|
||||
objfile_to_objfile_object (struct objfile *objfile)
|
||||
{
|
||||
PyObject *result
|
||||
= ((PyObject *) objfile_data (objfile, objfpy_objfile_data_key));
|
||||
if (result == NULL)
|
||||
{
|
||||
gdbpy_ref<objfile_object> object
|
||||
((objfile_object *) objfile_data (objfile, objfpy_objfile_data_key));
|
||||
((objfile_object *) PyObject_New (objfile_object, &objfile_object_type));
|
||||
if (object == NULL)
|
||||
{
|
||||
object.reset (PyObject_New (objfile_object, &objfile_object_type));
|
||||
if (object != NULL)
|
||||
{
|
||||
return NULL;
|
||||
if (!objfpy_initialize (object.get ()))
|
||||
return NULL;
|
||||
|
||||
object->objfile = objfile;
|
||||
set_objfile_data (objfile, objfpy_objfile_data_key, object.get ());
|
||||
}
|
||||
result = (PyObject *) object.release ();
|
||||
}
|
||||
|
||||
return (PyObject *) object.release ();
|
||||
return gdbpy_ref<>::new_reference (result);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -97,15 +97,15 @@ find_pretty_printer_from_objfiles (PyObject *value)
|
|||
|
||||
ALL_OBJFILES (obj)
|
||||
{
|
||||
PyObject *objf = objfile_to_objfile_object (obj);
|
||||
if (!objf)
|
||||
gdbpy_ref<> objf = objfile_to_objfile_object (obj);
|
||||
if (objf == NULL)
|
||||
{
|
||||
/* Ignore the error and continue. */
|
||||
PyErr_Clear ();
|
||||
continue;
|
||||
}
|
||||
|
||||
gdbpy_ref<> pp_list (objfpy_get_printers (objf, NULL));
|
||||
gdbpy_ref<> pp_list (objfpy_get_printers (objf.get (), NULL));
|
||||
gdbpy_ref<> function (search_pp_list (pp_list.get (), value));
|
||||
|
||||
/* If there is an error in any objfile list, abort the search and exit. */
|
||||
|
|
|
@ -344,9 +344,10 @@ pspy_get_objfiles (PyObject *self_, PyObject *args)
|
|||
|
||||
ALL_PSPACE_OBJFILES (self->pspace, objf)
|
||||
{
|
||||
PyObject *item = objfile_to_objfile_object (objf);
|
||||
gdbpy_ref<> item = objfile_to_objfile_object (objf);
|
||||
|
||||
if (!item || PyList_Append (list.get (), item) == -1)
|
||||
if (item == nullptr
|
||||
|| PyList_Append (list.get (), item.get ()) == -1)
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,13 +117,10 @@ static PyObject *
|
|||
stpy_get_objfile (PyObject *self, void *closure)
|
||||
{
|
||||
struct symtab *symtab = NULL;
|
||||
PyObject *result;
|
||||
|
||||
STPY_REQUIRE_VALID (self, symtab);
|
||||
|
||||
result = objfile_to_objfile_object (SYMTAB_OBJFILE (symtab));
|
||||
Py_XINCREF (result);
|
||||
return result;
|
||||
return objfile_to_objfile_object (SYMTAB_OBJFILE (symtab)).release ();
|
||||
}
|
||||
|
||||
/* Getter function for symtab.producer. */
|
||||
|
|
|
@ -147,7 +147,7 @@ gdbpy_get_matching_xmethod_workers
|
|||
list individually, but there's no data yet to show it's needed. */
|
||||
ALL_OBJFILES (objfile)
|
||||
{
|
||||
PyObject *py_objfile = objfile_to_objfile_object (objfile);
|
||||
gdbpy_ref<> py_objfile = objfile_to_objfile_object (objfile);
|
||||
|
||||
if (py_objfile == NULL)
|
||||
{
|
||||
|
@ -155,7 +155,8 @@ gdbpy_get_matching_xmethod_workers
|
|||
return EXT_LANG_RC_ERROR;
|
||||
}
|
||||
|
||||
gdbpy_ref<> objfile_matchers (objfpy_get_xmethods (py_objfile, NULL));
|
||||
gdbpy_ref<> objfile_matchers (objfpy_get_xmethods (py_objfile.get (),
|
||||
NULL));
|
||||
gdbpy_ref<> temp (PySequence_Concat (py_xmethod_matcher_list.get (),
|
||||
objfile_matchers.get ()));
|
||||
if (temp == NULL)
|
||||
|
|
|
@ -522,8 +522,7 @@ PyObject *pspy_get_frame_filters (PyObject *, void *);
|
|||
PyObject *pspy_get_frame_unwinders (PyObject *, void *);
|
||||
PyObject *pspy_get_xmethods (PyObject *, void *);
|
||||
|
||||
PyObject *objfile_to_objfile_object (struct objfile *)
|
||||
CPYCHECKER_RETURNS_BORROWED_REF;
|
||||
gdbpy_ref<> objfile_to_objfile_object (struct objfile *);
|
||||
PyObject *objfpy_get_printers (PyObject *, void *);
|
||||
PyObject *objfpy_get_frame_filters (PyObject *, void *);
|
||||
PyObject *objfpy_get_frame_unwinders (PyObject *, void *);
|
||||
|
|
|
@ -1359,15 +1359,10 @@ gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
|
|||
static PyObject *
|
||||
gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
|
||||
{
|
||||
PyObject *result;
|
||||
|
||||
if (! gdbpy_current_objfile)
|
||||
Py_RETURN_NONE;
|
||||
|
||||
result = objfile_to_objfile_object (gdbpy_current_objfile);
|
||||
if (result)
|
||||
Py_INCREF (result);
|
||||
return result;
|
||||
return objfile_to_objfile_object (gdbpy_current_objfile).release ();
|
||||
}
|
||||
|
||||
/* Compute the list of active python type printers and store them in
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue