X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=interactive.c;h=b72148cc41df54e79f0da53bd4853ba979674a0c;hp=a568d3c5c82fb065eaaff9c86aeed02ff5310094;hb=92d85d340495154f3fda23f322af13fc9de42155;hpb=586eb1abb437420e5b7678890abb82fdbd1f7c45 diff --git a/interactive.c b/interactive.c index a568d3c5..b72148cc 100644 --- a/interactive.c +++ b/interactive.c @@ -437,6 +437,9 @@ static int dispatch_key(__a_unused int count, __a_unused int key) { int i, ret; +again: + if (i9ep->key_sequence_length == 0) + return 0; for (i = i9ep->num_key_bindings - 1; i >= 0; i--) { if (strcmp(i9ep->key_sequence, i9ep->ici->bound_keyseqs[i])) continue; @@ -445,7 +448,15 @@ static int dispatch_key(__a_unused int count, __a_unused int key) ret = i9ep->ici->key_handler(i); return ret < 0? ret : 0; } - assert(0); + PARA_WARNING_LOG("ignoring key %d\n", i9ep->key_sequence[0]); + /* + * We received an undefined key sequence. Throw away the first byte, + * and try to parse the remainder. + */ + memmove(i9ep->key_sequence, i9ep->key_sequence + 1, + i9ep->key_sequence_length); /* move also terminating zero byte */ + i9ep->key_sequence_length--; + goto again; } /**