1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-19 03:58:05 -05:00

RDB's session logging patch: due to some ghastly special case, UTF-8

characters that failed the UTF-8 canonicality rules were being sent
to the session log twice. Sounds trivial, but I bet it'd have
confused anyone who turned on session logging precisely to track
down a canonicality bug :-)

[originally from svn r1244]
This commit is contained in:
Simon Tatham 2001-09-07 22:51:52 +00:00
parent 3c74c01014
commit e2c086b090

View File

@ -934,14 +934,17 @@ void term_out(void)
{ {
int c, inbuf_reap; int c, inbuf_reap;
for (inbuf_reap = 0; inbuf_reap < inbuf_head; inbuf_reap++) {
c = inbuf[inbuf_reap];
/* /*
* Optionally log the session traffic to a file. Useful for * Optionally log the session traffic to a file. Useful for
* debugging and possibly also useful for actual logging. * debugging and possibly also useful for actual logging.
*/ */
logtraffic((unsigned char) c, LGTYP_DEBUG); if (cfg.logtype == LGTYP_DEBUG)
for (inbuf_reap = 0; inbuf_reap < inbuf_head; inbuf_reap++) {
logtraffic((unsigned char) inbuf[inbuf_reap], LGTYP_DEBUG);
}
for (inbuf_reap = 0; inbuf_reap < inbuf_head; inbuf_reap++) {
c = inbuf[inbuf_reap];
/* Note only VT220+ are 8-bit VT102 is seven bit, it shouldn't even /* Note only VT220+ are 8-bit VT102 is seven bit, it shouldn't even
* be able to display 8-bit characters, but I'll let that go 'cause * be able to display 8-bit characters, but I'll let that go 'cause
@ -985,9 +988,9 @@ void term_out(void)
case 4: case 4:
case 5: case 5:
if ((c & 0xC0) != 0x80) { if ((c & 0xC0) != 0x80) {
inbuf_reap--; /* This causes the faulting character */ inbuf_reap--;
c = UCSERR; /* to be logged twice - not really a */ c = UCSERR;
utf_state = 0; /* serious problem. */ utf_state = 0;
break; break;
} }
utf_char = (utf_char << 6) | (c & 0x3f); utf_char = (utf_char << 6) | (c & 0x3f);