Return gdbpy_ref from some Python string functions

This changes python_string_to_unicode,
python_string_to_target_python_string, and
host_string_to_python_string to return gdbpy_ref.

gdb/ChangeLog
2018-11-04  Tom Tromey  <tom@tromey.com>

	* python/python.c (gdbpy_parameter_value): Update.
	* python/python-internal.h (python_string_to_unicode)
	(python_string_to_target_python_string)
	(host_string_to_python_string): Return gdbpy_ref.
	* python/py-utils.c (python_string_to_unicode)
	(unicode_to_encoded_python_string)
	(unicode_to_target_python_string)
	(python_string_to_target_string)
	(python_string_to_target_python_string): Return gdbpy_ref.
	(python_string_to_host_string): Update.
	(host_string_to_python_string): Return gdbpy_ref.
	* python/py-symtab.c (stpy_get_filename, stpy_get_producer)
	(stpy_fullname): Update.
	* python/py-progspace.c (pspy_get_filename, pspy_solib_name):
	Update.
	* python/py-prettyprint.c (print_string_repr): Update.
	* python/py-objfile.c (objfpy_get_filename, objfpy_get_username)
	(objfpy_get_build_id): Update.
	* python/py-breakpoint.c (bppy_get_location)
	(bppy_get_expression, bppy_get_condition, bppy_get_commands):
	Update.
This commit is contained in:
Tom Tromey 2018-10-24 16:40:00 -06:00
parent 12dfa12a3c
commit 833d985d1c
9 changed files with 56 additions and 29 deletions

View file

@ -34,7 +34,7 @@
If the given object is not one of the mentioned string types, NULL is
returned, with the TypeError python exception set. */
PyObject *
gdbpy_ref<>
python_string_to_unicode (PyObject *obj)
{
PyObject *unicode_str;
@ -57,7 +57,7 @@ python_string_to_unicode (PyObject *obj)
unicode_str = NULL;
}
return unicode_str;
return gdbpy_ref<> (unicode_str);
}
/* Returns a newly allocated string with the contents of the given unicode
@ -88,11 +88,11 @@ unicode_to_encoded_string (PyObject *unicode_str, const char *charset)
object converted to a named charset. If an error occurs during
the conversion, NULL will be returned and a python exception will
be set. */
static PyObject *
static gdbpy_ref<>
unicode_to_encoded_python_string (PyObject *unicode_str, const char *charset)
{
/* Translate string to named charset. */
return PyUnicode_AsEncodedString (unicode_str, charset, NULL);
return gdbpy_ref<> (PyUnicode_AsEncodedString (unicode_str, charset, NULL));
}
/* Returns a newly allocated string with the contents of the given
@ -110,7 +110,7 @@ unicode_to_target_string (PyObject *unicode_str)
object converted to the target's charset. If an error occurs
during the conversion, NULL will be returned and a python exception
will be set. */
static PyObject *
static gdbpy_ref<>
unicode_to_target_python_string (PyObject *unicode_str)
{
return unicode_to_encoded_python_string (unicode_str,
@ -123,7 +123,7 @@ unicode_to_target_python_string (PyObject *unicode_str)
gdb::unique_xmalloc_ptr<char>
python_string_to_target_string (PyObject *obj)
{
gdbpy_ref<> str (python_string_to_unicode (obj));
gdbpy_ref<> str = python_string_to_unicode (obj);
if (str == NULL)
return NULL;
@ -135,12 +135,12 @@ python_string_to_target_string (PyObject *obj)
set.
In Python 3, the returned object is a "bytes" object (not a string). */
PyObject *
gdbpy_ref<>
python_string_to_target_python_string (PyObject *obj)
{
gdbpy_ref<> str (python_string_to_unicode (obj));
gdbpy_ref<> str = python_string_to_unicode (obj);
if (str == NULL)
return NULL;
return str;
return unicode_to_target_python_string (str.get ());
}
@ -151,7 +151,7 @@ python_string_to_target_python_string (PyObject *obj)
gdb::unique_xmalloc_ptr<char>
python_string_to_host_string (PyObject *obj)
{
gdbpy_ref<> str (python_string_to_unicode (obj));
gdbpy_ref<> str = python_string_to_unicode (obj);
if (str == NULL)
return NULL;
@ -160,10 +160,11 @@ python_string_to_host_string (PyObject *obj)
/* Convert a host string to a python string. */
PyObject *
gdbpy_ref<>
host_string_to_python_string (const char *str)
{
return PyString_Decode (str, strlen (str), host_charset (), NULL);
return gdbpy_ref<> (PyString_Decode (str, strlen (str), host_charset (),
NULL));
}
/* Return true if OBJ is a Python string or unicode object, false