diff --git tty.c tty.c index bff0a97..21287a4 100644 --- tty.c +++ tty.c @@ -95,7 +95,6 @@ typedef struct TTYState { /* input handling */ enum InputState input_state; int input_param; - int utf8_state; int utf8_index; unsigned char buf[10]; char *term_name; @@ -413,12 +412,14 @@ static void tty_read_handler(void *opaque) /* charset handling */ if (s->charset == &charset_utf8) { - if (ts->utf8_state == 0) { - const char *p = cs8(ts->buf); + /* Make sure utf8 input works correctly 20040314 */ + ts->utf8_index++; + if (utf8_length[ts->buf[0]] == ts->utf8_index) { + const char *p; + p = (const char *)ts->buf; ch = utf8_decode(&p); - } else { - ts->utf8_state = utf8_length[ts->buf[0]] - 1; ts->utf8_index = 0; + } else { return; } } else {