summaryrefslogtreecommitdiff
path: root/Cython/Debugger/libpython.py
diff options
context:
space:
mode:
Diffstat (limited to 'Cython/Debugger/libpython.py')
-rw-r--r--Cython/Debugger/libpython.py16
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)