summaryrefslogtreecommitdiffstats
path: root/input.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2009-06-25 15:53:44 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2009-06-25 15:53:44 +0000
commit4eed190649f97b37bcf5681444a9cc45e3426a5c (patch)
tree5135b4a4eb758c6f5048575ea76a29a3e58afead /input.c
parentc3c14817c9f9a4cc5d89397577589834cb53853e (diff)
Oops, CAN and SUB should abort the sequence (return to first state), not remain
in the same state.
Diffstat (limited to 'input.c')
-rw-r--r--input.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/input.c b/input.c
index a4557838..d5bf0900 100644
--- a/input.c
+++ b/input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: input.c,v 1.4 2009/06/04 14:15:50 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.5 2009/06/04 14:24:49 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -400,6 +400,9 @@ input_state_sequence_first(u_char ch, struct input_ctx *ictx)
/* Abort sequence and begin with new. */
input_state(ictx, input_state_escape);
} 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);
}
@@ -465,6 +468,9 @@ input_state_sequence_next(u_char ch, struct input_ctx *ictx)
/* Abort sequence and begin with new. */
input_state(ictx, input_state_escape);
} 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);
}