Use gdbpy_enter_varobj in py-varobj.c
This converts the remaining functions in py-varobj.c to use gdbpy_enter_varobj. 2017-01-10 Tom Tromey <tom@tromey.com> * python/py-varobj.c (py_varobj_iter_dtor, py_varobj_iter_next): Use gdbpy_enter_varobj.
This commit is contained in:
parent
6cd67beaae
commit
788f258604
2 changed files with 10 additions and 11 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* python/py-varobj.c (py_varobj_iter_dtor, py_varobj_iter_next):
|
||||||
|
Use gdbpy_enter_varobj.
|
||||||
|
|
||||||
2017-01-10 Tom Tromey <tom@tromey.com>
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* varobj.c (gdbpy_enter_varobj): New constructor.
|
* varobj.c (gdbpy_enter_varobj): New constructor.
|
||||||
|
|
|
@ -39,11 +39,8 @@ static void
|
||||||
py_varobj_iter_dtor (struct varobj_iter *self)
|
py_varobj_iter_dtor (struct varobj_iter *self)
|
||||||
{
|
{
|
||||||
struct py_varobj_iter *dis = (struct py_varobj_iter *) self;
|
struct py_varobj_iter *dis = (struct py_varobj_iter *) self;
|
||||||
struct cleanup *back_to = varobj_ensure_python_env (self->var);
|
gdbpy_enter_varobj enter_py (self->var);
|
||||||
|
|
||||||
Py_XDECREF (dis->iter);
|
Py_XDECREF (dis->iter);
|
||||||
|
|
||||||
do_cleanups (back_to);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Implementation of the 'next' method of pretty-printed varobj
|
/* Implementation of the 'next' method of pretty-printed varobj
|
||||||
|
@ -53,8 +50,6 @@ static varobj_item *
|
||||||
py_varobj_iter_next (struct varobj_iter *self)
|
py_varobj_iter_next (struct varobj_iter *self)
|
||||||
{
|
{
|
||||||
struct py_varobj_iter *t = (struct py_varobj_iter *) self;
|
struct py_varobj_iter *t = (struct py_varobj_iter *) self;
|
||||||
struct cleanup *back_to;
|
|
||||||
PyObject *item;
|
|
||||||
PyObject *py_v;
|
PyObject *py_v;
|
||||||
varobj_item *vitem;
|
varobj_item *vitem;
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
|
@ -62,9 +57,9 @@ py_varobj_iter_next (struct varobj_iter *self)
|
||||||
if (!gdb_python_initialized)
|
if (!gdb_python_initialized)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
back_to = varobj_ensure_python_env (self->var);
|
gdbpy_enter_varobj enter_py (self->var);
|
||||||
|
|
||||||
item = PyIter_Next (t->iter);
|
gdbpy_ref item (PyIter_Next (t->iter));
|
||||||
|
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
{
|
{
|
||||||
|
@ -92,7 +87,7 @@ py_varobj_iter_next (struct varobj_iter *self)
|
||||||
|
|
||||||
name_str = xstrprintf ("<error at %d>",
|
name_str = xstrprintf ("<error at %d>",
|
||||||
self->next_raw_index++);
|
self->next_raw_index++);
|
||||||
item = Py_BuildValue ("(ss)", name_str, value_str.get ());
|
item.reset (Py_BuildValue ("(ss)", name_str, value_str.get ()));
|
||||||
xfree (name_str);
|
xfree (name_str);
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
{
|
{
|
||||||
|
@ -108,7 +103,7 @@ py_varobj_iter_next (struct varobj_iter *self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
|
if (!PyArg_ParseTuple (item.get (), "sO", &name, &py_v))
|
||||||
{
|
{
|
||||||
gdbpy_print_stack ();
|
gdbpy_print_stack ();
|
||||||
error (_("Invalid item from the child list"));
|
error (_("Invalid item from the child list"));
|
||||||
|
@ -121,7 +116,6 @@ py_varobj_iter_next (struct varobj_iter *self)
|
||||||
vitem->name = name;
|
vitem->name = name;
|
||||||
|
|
||||||
self->next_raw_index++;
|
self->next_raw_index++;
|
||||||
do_cleanups (back_to);
|
|
||||||
return vitem;
|
return vitem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue