文件: tui/main.rs:33-51 分类: 终端安全
tui/main.rs:33-51
问题: 终端清理仅在正常退出路径执行。terminal.draw() 或 event::read() 的 ? 错误传播、或任何 panic,都会跳过 raw mode / alternate screen 恢复。
terminal.draw()
event::read()
?
建议修复: 添加 RAII 终端 guard + panic hook 恢复终端状态。
该 Issue 描述的问题已不存在于当前代码中。
crates/tui/src/main.rs 已实现完整的 RAII TerminalGuard 模式(第 29-76 行):
crates/tui/src/main.rs
TerminalGuard
Drop
disable_raw_mode()
LeaveAlternateScreen
show_cursor()
event::poll/read()
Err
guard
EnterAlternateScreen
Terminal::new
Issue 建议的修复方案(RAII terminal guard)已在代码中实现。关闭此 Issue。
No dependencies set.
The note is not visible to the blocked user.
文件:
tui/main.rs:33-51分类: 终端安全
问题: 终端清理仅在正常退出路径执行。
terminal.draw()或event::read()的?错误传播、或任何 panic,都会跳过 raw mode / alternate screen 恢复。建议修复: 添加 RAII 终端 guard + panic hook 恢复终端状态。
审核结论:已修复 ✅
该 Issue 描述的问题已不存在于当前代码中。
当前代码分析
crates/tui/src/main.rs已实现完整的 RAIITerminalGuard模式(第 29-76 行):Droptrait 已实现(第 66-76 行):在 drop 时执行disable_raw_mode()+LeaveAlternateScreen+show_cursor()terminal.draw()的?(第 95 行)和event::poll/read()的?(第 96-97 行)触发Err返回时,guard离开作用域,Drop自动执行终端恢复Drop,guard会被正确 dropEnterAlternateScreen或Terminal::new失败时,已成功的步骤会被正确回滚Issue 建议的修复方案(RAII terminal guard)已在代码中实现。关闭此 Issue。