diff options
Diffstat (limited to 'Cython/Debugger/libpython.py')
-rw-r--r-- | Cython/Debugger/libpython.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/Cython/Debugger/libpython.py b/Cython/Debugger/libpython.py index 05d027691..dfca4dda2 100644 --- a/Cython/Debugger/libpython.py +++ b/Cython/Debugger/libpython.py @@ -2185,11 +2185,21 @@ class PythonCodeExecutor(object): def alloc_pystring(self, string): stringp = self.alloc_string(string) + PyString_FromStringAndSize = 'PyString_FromStringAndSize' + try: + gdb.parse_and_eval(PyString_FromStringAndSize) + except RuntimeError: + try: + gdb.parse_and_eval('PyUnicode_FromStringAndSize') + except RuntimeError: + PyString_FromStringAndSize = 'PyUnicodeUCS2_FromStringAndSize' + else: + PyString_FromStringAndSize = 'PyUnicode_FromStringAndSize' + try: result = gdb.parse_and_eval( - '(PyObject *) PyString_FromStringAndSize(' - '(char *) %d,' - '(size_t) %d)' % (stringp, len(string))) + '(PyObject *) %s((char *) %d, (size_t) %d)' % ( + PyString_FromStringAndSize, stringp, len(string))) finally: self.free(stringp) |