diff options
Diffstat (limited to 'gdb/python/py-progspace.c')
-rw-r--r-- | gdb/python/py-progspace.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c index ead616b..8724532 100644 --- a/gdb/python/py-progspace.c +++ b/gdb/python/py-progspace.c @@ -47,9 +47,11 @@ static PyObject * pspy_get_filename (PyObject *self, void *closure) { pspace_object *obj = (pspace_object *) self; + if (obj->pspace) { struct objfile *objfile = obj->pspace->symfile_object_file; + if (objfile && objfile->name) return PyString_Decode (objfile->name, strlen (objfile->name), host_charset (), NULL); @@ -61,6 +63,7 @@ static void pspy_dealloc (PyObject *self) { pspace_object *ps_self = (pspace_object *) self; + Py_XDECREF (ps_self->printers); self->ob_type->tp_free (self); } @@ -69,6 +72,7 @@ static PyObject * pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords) { pspace_object *self = (pspace_object *) type->tp_alloc (type, 0); + if (self) { self->pspace = NULL; @@ -87,6 +91,7 @@ PyObject * pspy_get_printers (PyObject *o, void *ignore) { pspace_object *self = (pspace_object *) o; + Py_INCREF (self->printers); return self->printers; } @@ -96,6 +101,7 @@ pspy_set_printers (PyObject *o, PyObject *value, void *ignore) { PyObject *tmp; pspace_object *self = (pspace_object *) o; + if (! value) { PyErr_SetString (PyExc_TypeError, |