This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: ctypes: remove implicit conversion between unicode and bytes
Type: Stage:
Components: ctypes, Unicode Versions: Python 3.2
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: theller Nosy List: flox, theller, vstinner
Priority: normal Keywords: patch

Created on 2010-06-10 23:03 by vstinner, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
ctypes_conversion.patch vstinner, 2010-06-10 23:03
ctypes_s_set.patch vstinner, 2010-06-10 23:03
ctypes_tests-2.patch vstinner, 2010-06-11 21:58
Messages (4)
msg107499 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2010-06-10 23:03
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).
msg107590 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2010-06-11 21:53
I commited ctypes_s_set.patch in Python 3.2 (r81911) because it does fix a real bug.
msg107591 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2010-06-11 21:58
Update ctypes_tests.patch against last changes: ctypes_tests-2.patch.
msg111750 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2010-07-28 00:22
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:02adminsetgithub: 53212
2010-07-28 00:22:40vstinnersetstatus: open -> closed
resolution: fixed
messages: + msg111750
2010-07-27 21:47:51floxsetnosy: + flox
2010-06-11 21:58:42vstinnersetfiles: - ctypes_tests.patch
2010-06-11 21:58:34vstinnersetfiles: + ctypes_tests-2.patch

messages: + msg107591
2010-06-11 21:53:39vstinnersetmessages: + msg107590
2010-06-10 23:04:03vstinnersetfiles: - ctypes_conversion.patch
2010-06-10 23:03:59vstinnersetfiles: + ctypes_tests.patch
2010-06-10 23:03:51vstinnersetfiles: + ctypes_s_set.patch
2010-06-10 23:03:41vstinnersetfiles: + ctypes_conversion.patch
2010-06-10 23:03:25vstinnercreate