]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.14] gh-133031: Support non-ASCII characters in curses.textpad.Textbox (GH-152451...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 29 Jun 2026 11:39:36 +0000 (13:39 +0200)
committerGitHub <noreply@github.com>
Mon, 29 Jun 2026 11:39:36 +0000 (14:39 +0300)
commit527e238a786b52655c9c04098436be912c1f2e84
treece5ef7f0403e6cb6a8e1299fcc700fadcdf0ccd5
parentf287fe8bbe8fedc1cc531b5a1548b8292c4bf158
[3.14] gh-133031: Support non-ASCII characters in curses.textpad.Textbox (GH-152451) (GH-152468)

Textbox mangled non-ASCII characters of an 8-bit locale encoding: it masked
reads with curses.ascii.ascii(), which clears the 8th bit, and tested input
with curses.ascii.isprint(), which rejects bytes above 127.

Decode cells and input bytes with the window's encoding instead.  Cells are
read with instr() and the lower-right cell is written as text, since inch() and
insch() with an int byte mishandle a non-ASCII character on a wide build.  This
uses only the byte-oriented curses API, so it works without wide-character
support.
(cherry picked from commit c253f0c14b046cf79881d0602620a3b2a15c2316)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Lib/curses/textpad.py
Lib/test/test_curses.py
Misc/NEWS.d/next/Library/2026-06-27-12-30-00.gh-issue-133031.Na8Bit.rst [new file with mode: 0644]