diff options
-rw-r--r-- | pttbbs/mbbsd/screen.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/pttbbs/mbbsd/screen.c b/pttbbs/mbbsd/screen.c index 711103fc..98352e0d 100644 --- a/pttbbs/mbbsd/screen.c +++ b/pttbbs/mbbsd/screen.c @@ -543,8 +543,13 @@ outc(unsigned char c) slp->len = cur_col + 1; } - // always invalid escapes - if (c == ESC_CHR || slp->data[cur_col] != c) { + // Escape processing is a mess here. If we don't always invalid ESC, + // attributes will be not updated if some ouptut generates ESC on same + // position; if we do that, cross-line outputs also corrupted, or more: + // #1FX6qLcO (PttCurrent). This has been turned on/off several times - and + // I still don't know how to make a perfect workaround. + // Well, we probably still need to call SOLVE_ANSI_CACHE everywhere... + if (slp->data[cur_col] != c) { slp->data[cur_col] = c; if (!(slp->mode & MODIFIED)) slp->smod = slp->emod = cur_col; |