csi: refactor CHT/CBT

Eliminate the outer loop, so that when moving the cursor multiple
tab stops, we no longer iterate the tab stop list all over again.

This also fixes a DoS flaw when passing a very large value as
CHT/CBT argument, which may hang the terminal.

Closes #2360
This commit is contained in:
CismonX 2026-05-25 06:31:04 +08:00 committed by Daniel Eklöf
parent 382e9a31c5
commit 66ec9fad88
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 24 additions and 18 deletions

View file

@ -94,11 +94,14 @@
`meson.build` ([#2379][2379]).
* Block selection area incorrectly updated when selecting back
across the starting column.
* Passing a very large value as CHT/CBT argument hangs the terminal
([#2360][2360]).
[2353]: https://codeberg.org/dnkl/foot/issues/2353
[2352]: https://codeberg.org/dnkl/foot/issues/2352
[2327]: https://codeberg.org/dnkl/foot/issues/2327
[2379]: https://codeberg.org/dnkl/foot/issues/2379
[2360]: https://codeberg.org/dnkl/foot/issues/2360
### Security