summaryrefslogtreecommitdiffstats
path: root/Modules/_ctypes
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-10-02 11:25:35 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-10-02 11:25:35 (GMT)
commit749261e241849834a5cfc70808260a534e50875f (patch)
treeafbaa8979a5b74dd2f3236454b661fdcf2b9d4c8 /Modules/_ctypes
parent5593d8aeb4bcc904ff58e8e3eb8b799a0aabc302 (diff)
downloadcpython-749261e241849834a5cfc70808260a534e50875f.zip
cpython-749261e241849834a5cfc70808260a534e50875f.tar.gz
cpython-749261e241849834a5cfc70808260a534e50875f.tar.bz2
Issue #8670: ctypes.c_wchar supports non-BMP characters with 32 bits wchar_t
Diffstat (limited to 'Modules/_ctypes')
-rw-r--r--Modules/_ctypes/cfield.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c
index ba60deb..072b8c6 100644
--- a/Modules/_ctypes/cfield.c
+++ b/Modules/_ctypes/cfield.c
@@ -1203,6 +1203,7 @@ static PyObject *
u_set(void *ptr, PyObject *value, Py_ssize_t size)
{
Py_ssize_t len;
+ wchar_t chars[2];
if (!PyUnicode_Check(value)) {
PyErr_Format(PyExc_TypeError,
"unicode string expected instead of %s instance",
@@ -1211,7 +1212,7 @@ u_set(void *ptr, PyObject *value, Py_ssize_t size)
} else
Py_INCREF(value);
- len = PyUnicode_GET_SIZE(value);
+ len = PyUnicode_AsWideChar((PyUnicodeObject *)value, chars, 2);
if (len != 1) {
Py_DECREF(value);
PyErr_SetString(PyExc_TypeError,
@@ -1219,7 +1220,7 @@ u_set(void *ptr, PyObject *value, Py_ssize_t size)
return NULL;
}
- *(wchar_t *)ptr = PyUnicode_AS_UNICODE(value)[0];
+ *(wchar_t *)ptr = chars[0];
Py_DECREF(value);
_RET(value);