Fix segfault when switching to full terminal mode #90
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.
Summary
Fixes a segmentation fault that occurred when entering full terminal mode (or any mode transition that triggers a terminal resize with font scale changes).
Root Cause
The VT stream handler (
vt_stream::Handler) contains aReadonlyHandlerthat holds pointers to the terminal's internal buffer structures. When the terminal is resized:applyTerminalResizeterminal.resize()reallocates internal buffers, invalidating pointers in theReadonlyHandlerprocessOutput()attempts to read from the stream with stale pointers → segfault at0x164545398Solution
Recreate the VT stream after each terminal resize to ensure the stream handler has fresh pointers to the resized terminal's internal state.
Changes
vt_streamimport tomain.zigapplyTerminalResize()to deinit and recreate the stream after terminal resizeTest Plan
zig build)zig build test)