summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2012-04-11 09:06:20 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2012-04-11 09:06:20 +0800
commite76242d1f47cd5822d40bb46ba6206eb43d9552d (patch)
tree4f170c5014ea60969724da06b5ada0147ab9e415
parent719b39ec2c97fb3900924c03514e039513e9a3ff (diff)
downloadpttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.tar
pttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.tar.gz
pttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.tar.bz2
pttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.tar.lz
pttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.tar.xz
pttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.tar.zst
pttbbs-e76242d1f47cd5822d40bb46ba6206eb43d9552d.zip
Revert Escape hack: #1FX6qLcO (PttCurrent)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5617 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/screen.c9
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;