After ESC, the sequence tracker drops to ground on a C0 control, where the parser runs it and stays in escape
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 83/100
Research direction
Start in emu/seq.rs, especially the Esc and EscIntermediate arms near line 1747, and compare their transitions with the DEC parser behavior described in the issue. Add a test there for both provided inputs, checking that tracker output, the DSR response, and the BEL count match vte. Done when both inputs stay synchronized with the parser.
Written by the indexing model from the issue text.
Description
What happens. A stray ESC before a control character puts termlens's tracker out of step with the vt100 parser:
\e(0\e\rqqqq\r\nxxgives a blank screen. The line-drawing characters the tracker stages are UTF-8, which vte ignores in the escape state, so the whole run and thexxafter it vanish. Without the charset, the same input gives"qqq\nxx".- In
\e\x07[6n, vte parses the CSI and the DSR is never answered, because the tracker saw no query. The BEL is not counted either (bells == 0).
Both come from a reviewer's unit probe and match the code.
Cause. emu/seq.rs:1747 has _ => State::Ground in the Esc arm, and the EscIntermediate arm is similar. vte 0.15's advance_esc executes 0x00–0x17, 0x19 and 0x1c–0x1f and stays in Escape. It ignores 0x7f and bytes ≥ 0x80.
Fix. Follow the DEC parser in Esc and EscIntermediate. Execute C0 (count BEL, apply SO/SI) without changing state, and ignore DEL and high bytes.
Done when both inputs track what vte does, with a test in emu/seq.rs.
- Dominant language
- Rust
- Stars
- 28
- Forks
- 24
- Avg merge
- 11h 23m
- Merged PRs (30d)
- 42
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from vyncint/termlens
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
documentation good first issue
Difficulty 1/5 Under an hour Newbie friendliness 95/100
Maintainers usually reply within 1 day
-
Release notes show a broken link: `extract-changelog.sh` copies a reference but not its definitionOpenbug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
All issues in vyncint/termlens
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Y-ASLant/ElegantClipboard#178 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
linxiv-dev/linXiv#384 · 1 comment ·
Maintainers usually reply within 1 day
-
bug drawings ui
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
userFRM/egui-charts#1595 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
smoltcp-rs/smoltcp#1235 ·
Maintainers usually reply within 1 day
-
scope:core type:security
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day