python: Make two functions return gdbpy_ref<>

I noticed that we release a gdbpy_ref in pretty_print_one_value only to
create it again later.  This patch fills the gap by returning a
gdbpy_ref all the way.

gdb/ChangeLog:

	* python/py-prettyprint.c (pretty_print_one_value): Return
	gdbpy_ref<>.
	(print_string_repr): Adjust.
	(apply_varobj_pretty_printer): Return gdbpy_ref<>.
	* python/python-internal.h (apply_varobj_pretty_printer): Return
	gdbpy_ref<>.
	* varobj.c (varobj_value_get_print_value): Adjust.
This commit is contained in:
Simon Marchi
2018-09-09 08:13:17 +01:00
parent 1aac008f1c
commit a5c5eda7e4
4 changed files with 22 additions and 13 deletions

View File

@ -99,6 +99,7 @@
from including our python/python.h header file. */
#include <Python.h>
#include <frameobject.h>
#include "py-ref.h"
#if PY_MAJOR_VERSION >= 3
#define IS_PY3K 1
@ -691,9 +692,9 @@ int gdbpy_is_value_object (PyObject *obj);
/* Note that these are declared here, and not in python.h with the
other pretty-printer functions, because they refer to PyObject. */
PyObject *apply_varobj_pretty_printer (PyObject *print_obj,
struct value **replacement,
struct ui_file *stream);
gdbpy_ref<> apply_varobj_pretty_printer (PyObject *print_obj,
struct value **replacement,
struct ui_file *stream);
PyObject *gdbpy_get_varobj_pretty_printer (struct value *value);
gdb::unique_xmalloc_ptr<char> gdbpy_get_display_hint (PyObject *printer);
PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args);