gh-153480: Stop IDLE crashing when a file open in the editor is deleted#153481
Open
tonghuaroot wants to merge 1 commit into
Open
gh-153480: Stop IDLE crashing when a file open in the editor is deleted#153481tonghuaroot wants to merge 1 commit into
tonghuaroot wants to merge 1 commit into
Conversation
… deleted EditorWindow.focus_in_event calls last_mtime on every <FocusIn> event, which passed the open file path to os.path.getmtime with no guard. When another program deleted or renamed the file, refocusing the IDLE window let a FileNotFoundError escape the Tk event handler. last_mtime now returns the last known mtime when the path is inaccessible, so refocusing no longer raises and does not prompt to reload a file that is gone.
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.
EditorWindow.focus_in_eventruns on every<FocusIn>event and callslast_mtime, which calledos.path.getmtime(self.io.filename)with no error handling. When the open file had been deleted or renamed by another program, refocusing the editor window let aFileNotFoundErrorescape the Tk event handler and broke the modified-on-disk reload check.last_mtimenow guardsgetmtimewithtry/except OSErrorand returns the last known mtime, sofocus_in_eventsees no change and does not prompt to reload a file that is gone. The regression test driveslast_mtimeas an unbound method against a duck-typed stub (no GUI) for both the deleted-file and no-filename cases.