Use gdbpy_enter_varobj in varobj_value_get_print_value

This changes the last function in varobj.c to use gdbpy_enter_varobj.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* varobj.c (varobj_value_get_print_value): Use
	gdbpy_enter_varobj.
This commit is contained in:
Tom Tromey 2016-11-12 11:51:59 -07:00
parent 1eba63835e
commit 68cdc55720
2 changed files with 14 additions and 12 deletions

View File

@ -1,3 +1,8 @@
2017-01-10 Tom Tromey <tom@tromey.com>
* varobj.c (varobj_value_get_print_value): Use
gdbpy_enter_varobj.
2017-01-10 Tom Tromey <tom@tromey.com>
* python/py-prettyprint.c (print_string_repr, print_children):

View File

@ -2431,7 +2431,7 @@ varobj_value_get_print_value (struct value *value,
{
PyObject *value_formatter = var->dynamic->pretty_printer;
varobj_ensure_python_env (var);
gdbpy_enter_varobj enter_py (var);
if (value_formatter)
{
@ -2446,24 +2446,21 @@ varobj_value_get_print_value (struct value *value,
if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
{
struct value *replacement;
PyObject *output = NULL;
output = apply_varobj_pretty_printer (value_formatter,
&replacement,
stb);
gdbpy_ref output (apply_varobj_pretty_printer (value_formatter,
&replacement,
stb));
/* If we have string like output ... */
if (output)
if (output != NULL)
{
make_cleanup_py_decref (output);
/* If this is a lazy string, extract it. For lazy
strings we always print as a string, so set
string_print. */
if (gdbpy_is_lazy_string (output))
if (gdbpy_is_lazy_string (output.get ()))
{
gdbpy_extract_lazy_string (output, &str_addr, &type,
&len, &encoding);
gdbpy_extract_lazy_string (output.get (), &str_addr,
&type, &len, &encoding);
string_print = 1;
}
else
@ -2475,7 +2472,7 @@ varobj_value_get_print_value (struct value *value,
string as a value. */
gdb::unique_xmalloc_ptr<char> s
= python_string_to_target_string (output);
= python_string_to_target_string (output.get ());
if (s)
{