From 9e2d5a89b3c4615f7ef55a7f03270af3274f8b12 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Sun, 10 May 2026 22:31:17 -0400 Subject: [PATCH] Fixed horrible crash bug with opening vim. --- src/fenrirscreenreader/fenrirVersion.py | 2 +- src/fenrirscreenreader/screenDriver/ptyDriver.py | 4 ++++ tests/unit/test_pty_terminal_sequences.py | 10 ++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/fenrirscreenreader/fenrirVersion.py b/src/fenrirscreenreader/fenrirVersion.py index 19d3602e..64462039 100644 --- a/src/fenrirscreenreader/fenrirVersion.py +++ b/src/fenrirscreenreader/fenrirVersion.py @@ -4,5 +4,5 @@ # Fenrir TTY screen reader # By Chrys, Storm Dragon, and contributors. -version = "2026.05.09.1" +version = "2026.05.10" code_name = "testing" diff --git a/src/fenrirscreenreader/screenDriver/ptyDriver.py b/src/fenrirscreenreader/screenDriver/ptyDriver.py index b30c7b8f..aa44c601 100644 --- a/src/fenrirscreenreader/screenDriver/ptyDriver.py +++ b/src/fenrirscreenreader/screenDriver/ptyDriver.py @@ -52,6 +52,10 @@ class FenrirScreen(pyte.Screen): kwargs.pop("private", None) super(FenrirScreen, self).set_margins(*args, **kwargs) + def select_graphic_rendition(self, *args, **kwargs): + kwargs.pop("private", None) + super(FenrirScreen, self).select_graphic_rendition(*args, **kwargs) + class Terminal: def __init__(self, columns, lines, p_in, env=None): diff --git a/tests/unit/test_pty_terminal_sequences.py b/tests/unit/test_pty_terminal_sequences.py index 4eff0a6b..6ad7fbb5 100644 --- a/tests/unit/test_pty_terminal_sequences.py +++ b/tests/unit/test_pty_terminal_sequences.py @@ -24,6 +24,16 @@ def test_csi_sequences_with_intermediate_characters_do_not_render_final_byte(): assert "p" not in screen["text"] +@pytest.mark.unit +def test_private_sgr_sequence_from_fullscreen_apps_does_not_crash(): + terminal = Terminal(10, 3, DummyProcessInput()) + + terminal.feed(b"\x1b[?25;7mX") + screen = terminal.get_screen_content() + + assert screen["text"].splitlines()[0] == "X " + + @pytest.mark.unit def test_optional_float_setting_uses_default_when_missing(): settings_manager = type(