Commit da0eca42 authored by Victor Stinner's avatar Victor Stinner

Issue #8966: If a ctypes structure field is an array of c_char, convert its

value to bytes instead of str (as done for c_char and c_char_p).
parent cc0cfd35
......@@ -30,8 +30,8 @@ class BytesTest(unittest.TestCase):
X("abc")
x = X(b"abc")
self.assertEqual(x.a, "abc")
self.assertEqual(type(x.a), str)
self.assertEqual(x.a, b"abc")
self.assertEqual(type(x.a), bytes)
def test_struct_W(self):
class X(Structure):
......
......@@ -209,9 +209,9 @@ class StructureTestCase(unittest.TestCase):
self.assertRaises(TypeError, Person, "Name", "HI")
# short enough
self.assertEqual(Person("12345", 5).name, "12345")
self.assertEqual(Person("12345", 5).name, b"12345")
# exact fit
self.assertEqual(Person("123456", 5).name, "123456")
self.assertEqual(Person("123456", 5).name, b"123456")
# too long
self.assertRaises(ValueError, Person, "1234567", 5)
......@@ -269,9 +269,9 @@ class StructureTestCase(unittest.TestCase):
p = Person("Someone", ("1234", "5678"), 5)
self.assertEqual(p.name, "Someone")
self.assertEqual(p.phone.areacode, "1234")
self.assertEqual(p.phone.number, "5678")
self.assertEqual(p.name, b"Someone")
self.assertEqual(p.phone.areacode, b"1234")
self.assertEqual(p.phone.number, b"5678")
self.assertEqual(p.age, 5)
def test_structures_with_wchar(self):
......
......@@ -421,6 +421,9 @@ C-API
Library
-------
- Issue #8966: If a ctypes structure field is an array of c_char, convert its
value to bytes instead of str (as done for c_char and c_char_p).
- Issue #8188: Comparisons between Decimal and Fraction objects are
now permitted, returning a result based on the exact numerical
values of the operands. This builds on issue #2531, which allowed
......@@ -1288,7 +1291,7 @@ Extension Modules
-----------------
- Issue #3129: Trailing digits in format string are no longer ignored.
For example, "1" or "ilib123" are now invalid formats and cause
For example, "1" or "ilib123" are now invalid formats and cause
``struct.error`` to be raised.
- Issue #7384: If the system readline library is linked against ncurses,
......
......@@ -1333,7 +1333,7 @@ s_get(void *ptr, Py_ssize_t size)
break;
}
return PyUnicode_FromStringAndSize((char *)ptr, (Py_ssize_t)i);
return PyBytes_FromStringAndSize((char *)ptr, (Py_ssize_t)i);
}
static PyObject *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment