Change type of encoding argument to gdbpy_extract_lazy_string

This changes gdbpy_extract_lazy_string's "encoding" argument to be a
unique_xmalloc_ptr.  I chose this rather than std::string because it
can sometimes be NULL.

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
	of "encoding".
	* varobj.c (varobj_value_get_print_value): Update.
	* python/python-internal.h (gdbpy_extract_lazy_string): Update.
This commit is contained in:
Tom Tromey 2016-11-12 11:48:48 -07:00
parent bde7b3e3a0
commit 1eba63835e
5 changed files with 22 additions and 16 deletions

View file

@ -180,14 +180,13 @@ gdbpy_is_lazy_string (PyObject *result)
}
/* Extract the parameters from the lazy string object STRING.
ENCODING will either be set to NULL, or will be allocated with
xmalloc, in which case the callers is responsible for freeing
it. */
ENCODING may be set to NULL, if no encoding is found. */
void
gdbpy_extract_lazy_string (PyObject *string, CORE_ADDR *addr,
struct type **str_type,
long *length, char **encoding)
long *length,
gdb::unique_xmalloc_ptr<char> *encoding)
{
lazy_string_object *lazy;
@ -198,7 +197,7 @@ gdbpy_extract_lazy_string (PyObject *string, CORE_ADDR *addr,
*addr = lazy->address;
*str_type = lazy->type;
*length = lazy->length;
*encoding = lazy->encoding ? xstrdup (lazy->encoding) : NULL;
encoding->reset (lazy->encoding ? xstrdup (lazy->encoding) : NULL);
}