From 5a16642f8f65648cfe923ecf4b54afa1bb4866df Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 7 Sep 2001 22:51:52 +0000 Subject: [PATCH] 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 :-) git-svn-id: svn://svn.tartarus.org/sgt/putty@1244 cda61777-01e9-0310-a592-d414129be87e --- terminal.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/terminal.c b/terminal.c index 8f8ec157..a63d8be8 100644 --- a/terminal.c +++ b/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); -- 2.11.0