This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Use gdbpy_enter_varobj in varobj_value_get_print_value
- From: Tom Tromey <tromey at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 11 Jan 2017 05:22:48 -0000
- Subject: [binutils-gdb] Use gdbpy_enter_varobj in varobj_value_get_print_value
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=68cdc55720bbe34d9d844ef2a0c4d75fcab4bc99
commit 68cdc55720bbe34d9d844ef2a0c4d75fcab4bc99
Author: Tom Tromey <tom@tromey.com>
Date: Sat Nov 12 11:51:59 2016 -0700
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.
Diff:
---
gdb/ChangeLog | 5 +++++
gdb/varobj.c | 21 +++++++++------------
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8eb4390..275e507 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
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):
Update.
* python/py-lazy-string.c (gdbpy_extract_lazy_string): Change type
diff --git a/gdb/varobj.c b/gdb/varobj.c
index d75c9b8..f93e930 100644
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -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)
{