1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-10 07:38:06 -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,15 +934,18 @@ void term_out(void)
{
int c, inbuf_reap;
/*
* Optionally log the session traffic to a file. Useful for
* debugging and possibly also useful for actual logging.
*/
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];
/*
* Optionally log the session traffic to a file. Useful for
* debugging and possibly also useful for actual logging.
*/
logtraffic((unsigned char) c, LGTYP_DEBUG);
/* 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
* of i18n.
@ -985,9 +988,9 @@ void term_out(void)
case 4:
case 5:
if ((c & 0xC0) != 0x80) {
inbuf_reap--; /* This causes the faulting character */
c = UCSERR; /* to be logged twice - not really a */
utf_state = 0; /* serious problem. */
inbuf_reap--;
c = UCSERR;
utf_state = 0;
break;
}
utf_char = (utf_char << 6) | (c & 0x3f);