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).
This commit is contained in:
Victor Stinner 2010-06-11 21:50:30 +00:00
parent cc0cfd3576
commit da0eca427a
4 changed files with 12 additions and 9 deletions

View file

@ -30,8 +30,8 @@ class X(Structure):
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):

View file

@ -209,9 +209,9 @@ class Person(Structure):
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 Person(Structure):
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):

View file

@ -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,

View file

@ -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 *