https://gitlab.synchro.net/main/sbbs/-/commit/12d817c0b81a049f4434b5bf
Modified Files:
src/sbbs3/ansi_parser_test.cpp ansi_terminal.cpp ansi_terminal.h con_out.cpp terminal.h
Log Message:
Keep whole control strings out of the line buffer
restoreline() replays the line buffer to redraw a line after, for
example, a node message interrupts it. The line buffer already skipped
the body of a DCS/OSC/PM/APC string, but kept its "ESC _" introducer and
the final byte of its terminator. Replaying those opens a string the
terminal never sees closed, so it swallows all following output: an
@SOUND: in a prompt, followed by an incoming node message, was enough.
term_out() now records where each sequence begins in the line buffer and
rolls the buffer back to that point when a sequence completes, or breaks, having been a control string. CSI sequences are left in place, so
restoreline() still restores colors.
ansi_parser_test.cpp pins the parser states this depends on.
Co-Authored-By: Claude Opus 5.5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net