gh-46927: Prevent readline from overriding environment#153184
Open
mbriand wants to merge 5 commits into
Open
Conversation
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>
Documentation build overview
494 files changed ·
|
Member
|
Sorry, disabled, I have a little comment. |
Member
There was a problem hiding this comment.
This should be in Library.
| # See TestHistoryManipulation for the full test. | ||
|
|
||
| def test_environment_is_not_modified(self): | ||
| # os.environ contains enviroment at the time "os" module was loaded, so |
Member
There was a problem hiding this comment.
Suggested change
| # os.environ contains enviroment at the time "os" module was loaded, so | |
| # os.environ contains environment at the time "os" module was loaded, so |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.