ctypes doesn't have strict separation between bytes and characters, whereas Python3 splitted str/unicode of Python2 into bytes/str which a strict separation. The result is that sometimes it works (no error), sometimes it fails (the first time that the user inserts a non-ASCII character). I wrote 3 patches: - ctypes_s_set.patch: fix s_set(), return an unicode string instead of a bytes string - ctypes_conversion.patch: remove ctypes.set_conversion_mode() and all code using it (remove the implicit conversions) - ctypes_tests.patch: fix all tests according the changes introduced by the two previous patches ctypes_s_set.patch is trivial and fixes a real bug. ctypes_conversion.patch does basically remove code. ctypes_tests.patch is the biggest part because the test suite is mostly based on the implicit conversion. Except the parts removing the calls to ctypes.set_conversion_mode() and the tests testing the implicit conversion, ctypes_tests.patch can be commited alone because it improves the test suite (use the right types).
I commited both patches to 3.2, but I splitted them in a different way: - r83191 "fixes" tests (remove implicit conversion) - r83195 removes the implicit conversion in ctypes So it's easier to review the commits and revert the second commit.
History
Date
User
Action
Args
2022-04-11 14:57:02
admin
set
github: 53212
2010-07-28 00:22:40
vstinner
set
status: open -> closedresolution: fixedmessages: +