Skip to content

gh-46927: Prevent readline from overriding environment#153184

Open
mbriand wants to merge 4 commits into
python:mainfrom
mbriand:fix-issue-46927
Open

gh-46927: Prevent readline from overriding environment#153184
mbriand wants to merge 4 commits into
python:mainfrom
mbriand:fix-issue-46927

Conversation

@mbriand

@mbriand mbriand commented Jul 6, 2026

Copy link
Copy Markdown

Readline library will set the LINES and COLUMNS environment variables during initialization. One might expect these variables to be updated later on SIGWINCH, but this is not the case with cpython.

As a consequence, when the readline module is imported, any process launched from cpython with the default environment will have LINES and COLUMNS variables set, potentially to a wrong value.

Use the rl_change_environment global variable to disable this initial setup of the environment variables.

Issue #46927

--

Sorry, I completely broke the original PR and it got closed: #133585

@ZeroIntensity , @serhiy-storchaka , you did contribute to the discussion of the first PR, so you might have some comments.

mbriand and others added 4 commits July 3, 2026 11:47
Readline library will set the LINES and COLUMNS environment variables
during initialization. One might expect these variables to be updated
later on SIGWINCH, but this is not the case with cpython.

As a consequence, when the readline module is imported, any process
launched from cpython with the default environment will have LINES and
COLUMNS variables set, potentially to a wrong value.

Use the rl_change_environment global variable to disable this initial
setup of the environment variables.
Guard the rl_change_environment assignment with HAVE_RL_CHANGE_ENVIRONMENT,
set by a configure link test, instead of the __APPLE__ macro.  This compiles
it out on any libedit build lacking the symbol, not just on macOS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants