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:
parent
3c74c01014
commit
e2c086b090
21
terminal.c
21
terminal.c
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user