From d6015824ddcd2b0373232e528ade8b40e12c1a0a Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Thu, 4 Jun 2009 14:42:14 +0000 Subject: [PATCH] Okay, so I screwed up when testing this, doh. Unbreak so that CAN/SUB actually do cancel the sequence, and tweak to make the code more clear. --- input.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/input.c b/input.c index f7980c25..61de9a4d 100644 --- a/input.c +++ b/input.c @@ -399,13 +399,16 @@ input_state_sequence_first(u_char ch, struct input_ctx *ictx) if (ch == 0x1b) { /* ESC */ /* Abort sequence and begin with new. */ input_state(ictx, input_state_escape); - } else if (ch != 0x18 && ch != 0x1a) { /* CAN and SUB */ + return; + } else if (ch == 0x18 || ch == 0x1a) { /* CAN and SUB */ /* Abort sequence. */ input_state(ictx, input_state_first); - } else { - /* Handle C0 immediately. */ - input_handle_c0_control(ch, ictx); + return; } + + /* Handle C0 immediately. */ + input_handle_c0_control(ch, ictx); + /* * Just come back to this state, in case the next character * is the start of a private sequence. @@ -467,13 +470,16 @@ input_state_sequence_next(u_char ch, struct input_ctx *ictx) if (ch == 0x1b) { /* ESC */ /* Abort sequence and begin with new. */ input_state(ictx, input_state_escape); - } else if (ch != 0x18 && ch != 0x1a) { /* CAN and SUB */ + return; + } else if (ch == 0x18 || ch == 0x1a) { /* CAN and SUB */ /* Abort sequence. */ input_state(ictx, input_state_first); - } else { - /* Handle C0 immediately. */ - input_handle_c0_control(ch, ictx); + return; } + + /* Handle C0 immediately. */ + input_handle_c0_control(ch, ictx); + return; }