diff options
author | Tom Tromey <tom@tromey.com> | 2018-05-21 12:35:59 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-06-18 12:51:02 -0600 |
commit | b4be9fadea469e2c937c81a8f1d3243206f9bcfc (patch) | |
tree | 7ffa8ba6e9cc9c630d8775e71e30963d390e53c6 /gdb/python/py-value.c | |
parent | 3f0dbd670b59aade6224aadcbc3a1943a4645a68 (diff) | |
download | binutils-gdb-b4be9fadea469e2c937c81a8f1d3243206f9bcfc.tar.gz |
Use unique_xmalloc_ptr for read_string
This changes read_string's "buffer" out-parameter to be a
unique_xmalloc_ptr, then updates the users. This allows for the
removal of some cleanups.
I chose unique_xmalloc_ptr rather than byte_vector here due to the way
Guile unwinding seems to work.
Tested by the buildbot.
gdb/ChangeLog
2018-06-18 Tom Tromey <tom@tromey.com>
* valprint.h (read_string): Update.
* valprint.c (read_string): Change type of "buffer".
(val_print_string): Update.
* python/py-value.c (valpy_string): Update.
* language.h (struct language_defn) <la_get_string>: Change
type of "buffer".
(default_get_string, c_get_string): Update.
* language.c (default_get_string): Change type of "buffer".
* guile/scm-value.c (gdbscm_value_to_string): Update.
* c-lang.c (c_get_string): Change type of "buffer".
Diffstat (limited to 'gdb/python/py-value.c')
-rw-r--r-- | gdb/python/py-value.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c index 30a0082da85..1b880fa1917 100644 --- a/gdb/python/py-value.c +++ b/gdb/python/py-value.c @@ -517,9 +517,8 @@ static PyObject * valpy_string (PyObject *self, PyObject *args, PyObject *kw) { int length = -1; - gdb_byte *buffer; + gdb::unique_xmalloc_ptr<gdb_byte> buffer; struct value *value = ((value_object *) self)->value; - PyObject *unicode; const char *encoding = NULL; const char *errors = NULL; const char *user_encoding = NULL; @@ -542,12 +541,9 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw) END_CATCH encoding = (user_encoding && *user_encoding) ? user_encoding : la_encoding; - unicode = PyUnicode_Decode ((const char *) buffer, - length * TYPE_LENGTH (char_type), - encoding, errors); - xfree (buffer); - - return unicode; + return PyUnicode_Decode ((const char *) buffer.get (), + length * TYPE_LENGTH (char_type), + encoding, errors); } /* A helper function that implements the various cast operators. */ |