🔴 [H9] 运行时 panic/error 无终端恢复保护 #9
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
文件:
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。