mirror of
https://github.com/python/cpython.git
synced 2026-01-06 23:42:34 +00:00
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:
parent
cc0cfd3576
commit
da0eca427a
4 changed files with 12 additions and 9 deletions
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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 *
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue