aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2009-09-25 21:39:53 +0000
committerTom Tromey <tromey@redhat.com>2009-09-25 21:39:53 +0000
commit96c07c5b96e970c93ab71a1f351ca669bba78d1a (patch)
tree0228be5148273ed3078a199936b4ebf6cb9534d5 /gdb/python
parentb8899f2b6861deda28ccc10d925105e7e516d68b (diff)
downloadgdb-96c07c5b96e970c93ab71a1f351ca669bba78d1a.zip
gdb-96c07c5b96e970c93ab71a1f351ca669bba78d1a.tar.gz
gdb-96c07c5b96e970c93ab71a1f351ca669bba78d1a.tar.bz2
gdb
PR python/10664: * language.h (struct language_defn) <la_get_string>: Add 'char_type' argument. (LA_GET_STRING): Likewise. (default_get_string, c_get_string): Update. * language.c (default_get_string): Add 'char_type' argument. * c-valprint.c (c_textual_element_type): Rename from textual_element_type. No longer static. Update callers. * c-lang.h (c_textual_element_type): Declare. * c-lang.c (c_get_string): Add 'char_type' argument. gdb/testsuite PR python/10664: * gdb.base/charset.exp: Test utf-16 strings with Python.
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-value.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 58bcee3..e2ae0ba 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -238,6 +238,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
const char *errors = NULL;
const char *user_encoding = NULL;
const char *la_encoding = NULL;
+ struct type *char_type;
static char *keywords[] = { "encoding", "errors", "length" };
if (!PyArg_ParseTupleAndKeywords (args, kw, "|ssi", keywords,
@@ -246,12 +247,13 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
TRY_CATCH (except, RETURN_MASK_ALL)
{
- LA_GET_STRING (value, &buffer, &length, &la_encoding);
+ LA_GET_STRING (value, &buffer, &length, &char_type, &la_encoding);
}
GDB_PY_HANDLE_EXCEPTION (except);
encoding = (user_encoding && *user_encoding) ? user_encoding : la_encoding;
- unicode = PyUnicode_Decode (buffer, length, encoding, errors);
+ unicode = PyUnicode_Decode (buffer, length * TYPE_LENGTH (char_type),
+ encoding, errors);
xfree (buffer);
return unicode;