diff -r c1ca1c4c131b Lib/ctypes/__init__.py --- a/Lib/ctypes/__init__.py Wed Aug 06 17:50:39 2014 +0300 +++ b/Lib/ctypes/__init__.py Thu Aug 07 12:37:02 2014 +0300 @@ -49,7 +49,7 @@ create_string_buffer(anInteger) -> character array create_string_buffer(aString, anInteger) -> character array """ - if isinstance(init, (str, bytes)): + if isinstance(init, bytes): if size is None: size = len(init)+1 buftype = c_char * size @@ -284,7 +284,7 @@ create_unicode_buffer(anInteger) -> character array create_unicode_buffer(aString, anInteger) -> character array """ - if isinstance(init, (str, bytes)): + if isinstance(init, str): if size is None: size = len(init)+1 buftype = c_wchar * size diff -r c1ca1c4c131b Lib/ctypes/test/test_buffers.py --- a/Lib/ctypes/test/test_buffers.py Wed Aug 06 17:50:39 2014 +0300 +++ b/Lib/ctypes/test/test_buffers.py Thu Aug 07 12:37:02 2014 +0300 @@ -21,6 +21,8 @@ self.assertEqual(b[::2], b"ac") self.assertEqual(b[::5], b"a") + self.assertRaises(TypeError, create_string_buffer, "abc") + def test_buffer_interface(self): self.assertEqual(len(bytearray(create_string_buffer(0))), 0) self.assertEqual(len(bytearray(create_string_buffer(1))), 1) @@ -43,6 +45,8 @@ self.assertEqual(b[::2], "ac") self.assertEqual(b[::5], "a") + self.assertRaises(TypeError, create_unicode_buffer, b"abc") + @need_symbol('c_wchar') def test_unicode_conversion(self): b = create_unicode_buffer("abc") diff -r c1ca1c4c131b Modules/_ctypes/_ctypes.c --- a/Modules/_ctypes/_ctypes.c Wed Aug 06 17:50:39 2014 +0300 +++ b/Modules/_ctypes/_ctypes.c Thu Aug 07 12:37:02 2014 +0300 @@ -1471,7 +1471,7 @@ Py_INCREF(Py_None); return Py_None; } - if (PyUnicode_Check(value) || PyBytes_Check(value)) { + if (PyUnicode_Check(value)) { PyCArgObject *parg; struct fielddesc *fd = _ctypes_get_fielddesc("Z"); @@ -1623,7 +1623,7 @@ return (PyObject *)parg; } /* XXX struni: remove later */ -/* string */ +/* bytes */ if (PyBytes_Check(value)) { PyCArgObject *parg; struct fielddesc *fd = _ctypes_get_fielddesc("z"); @@ -1640,23 +1640,6 @@ } return (PyObject *)parg; } -/* bytes */ - if (PyByteArray_Check(value)) { - PyCArgObject *parg; - struct fielddesc *fd = _ctypes_get_fielddesc("z"); - - parg = PyCArgObject_new(); - if (parg == NULL) - return NULL; - parg->pffi_type = &ffi_type_pointer; - parg->tag = 'z'; - parg->obj = fd->setfunc(&parg->value, value, 0); - if (parg->obj == NULL) { - Py_DECREF(parg); - return NULL; - } - return (PyObject *)parg; - } /* unicode */ if (PyUnicode_Check(value)) { PyCArgObject *parg;