mirror of https://github.com/python/cpython
Accept bytes in c_char_p and c_wchar_p types.
This commit is contained in:
parent
3af4266d07
commit
2c5e96465f
|
@ -14,5 +14,13 @@ class BytesTest(unittest.TestCase):
|
|||
c_wchar.from_param(b"x")
|
||||
(c_wchar * 3)(b"a", b"b", b"c")
|
||||
|
||||
def test_c_char_p(self):
|
||||
c_char_p("foo bar")
|
||||
c_char_p(b"foo bar")
|
||||
|
||||
def test_c_wchar_p(self):
|
||||
c_wchar_p("foo bar")
|
||||
c_wchar_p(b"foo bar")
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
@ -1354,8 +1354,8 @@ z_set(void *ptr, PyObject *value, Py_ssize_t size)
|
|||
Py_INCREF(value);
|
||||
return value;
|
||||
}
|
||||
if (PyString_Check(value)) {
|
||||
*(char **)ptr = PyString_AS_STRING(value);
|
||||
if (PyBytes_Check(value)) {
|
||||
*(char **)ptr = PyBytes_AsString(value);
|
||||
Py_INCREF(value);
|
||||
return value;
|
||||
} else if (PyUnicode_Check(value)) {
|
||||
|
@ -1410,13 +1410,7 @@ Z_set(void *ptr, PyObject *value, Py_ssize_t size)
|
|||
Py_INCREF(value);
|
||||
return value;
|
||||
}
|
||||
if (PyString_Check(value)) {
|
||||
value = PyUnicode_FromEncodedObject(value,
|
||||
conversion_mode_encoding,
|
||||
conversion_mode_errors);
|
||||
if (!value)
|
||||
return NULL;
|
||||
} else if (PyInt_Check(value) || PyLong_Check(value)) {
|
||||
if (PyInt_Check(value) || PyLong_Check(value)) {
|
||||
#if SIZEOF_VOID_P == SIZEOF_LONG_LONG
|
||||
*(wchar_t **)ptr = (wchar_t *)PyInt_AsUnsignedLongLongMask(value);
|
||||
#else
|
||||
|
@ -1424,6 +1418,13 @@ Z_set(void *ptr, PyObject *value, Py_ssize_t size)
|
|||
#endif
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
if (PyBytes_Check(value)) {
|
||||
value = PyUnicode_FromEncodedObject(value,
|
||||
conversion_mode_encoding,
|
||||
conversion_mode_errors);
|
||||
if (!value)
|
||||
return NULL;
|
||||
} else if (!PyUnicode_Check(value)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"unicode string or integer address expected instead of %s instance",
|
||||
|
|
Loading…
Reference in New Issue