diff options
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/_ctypes/callproc.c | 3 |
2 files changed, 5 insertions, 1 deletions
@@ -163,6 +163,9 @@ Core and Builtins Library ------- +- Issue #5203: Fixed ctypes segfaults when passing a unicode string to a + function without argtypes (only occurs if HAVE_USABLE_WCHAR_T is false). + - Issue #3386: distutils.sysconfig.get_python_lib prefix argument was ignored under NT and OS2. Patch by Philip Jenvey. diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 3bd6d66..c153ae2 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -645,14 +645,15 @@ static int ConvParam(PyObject *obj, Py_ssize_t index, struct argument *pa) #ifdef CTYPES_UNICODE if (PyUnicode_Check(obj)) { - pa->ffi_type = &ffi_type_pointer; #ifdef HAVE_USABLE_WCHAR_T + pa->ffi_type = &ffi_type_pointer; pa->value.p = PyUnicode_AS_UNICODE(obj); Py_INCREF(obj); pa->keep = obj; return 0; #else int size = PyUnicode_GET_SIZE(obj); + pa->ffi_type = &ffi_type_pointer; size += 1; /* terminating NUL */ size *= sizeof(wchar_t); pa->value.p = PyMem_Malloc(size); |