From b8017a36debcd4bcb2b3d8b9a034a11d3a1941c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 18 Jun 2019 21:55:18 +0200 Subject: [PATCH] vt: fix utf-8 bug: re-load 'current state' after processing a utf8 byte --- vt.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vt.c b/vt.c index da211e8c..9c136828 100644 --- a/vt.c +++ b/vt.c @@ -187,6 +187,7 @@ action(struct terminal *term, enum action action, uint8_t c) //LOG_DBG("print: UTF8: %.*s", (int)term->vt.utf8.idx, term->vt.utf8.data); memcpy(cell->c, term->vt.utf8.data, term->vt.utf8.idx); cell->c[term->vt.utf8.idx] = '\0'; + memset(&term->vt.utf8, 0, sizeof(term->vt.utf8)); } else { //LOG_DBG("print: ASCII: %c", c); cell->c[0] = c; @@ -288,10 +289,14 @@ vt_from_slave(struct terminal *term, const uint8_t *data, size_t len) if (current_state == STATE_UTF8) { if (!process_utf8(term, data[i])) abort(); + + current_state = term->vt.state; if (current_state == STATE_UTF8) continue; + if (!action(term, ACTION_PRINT, 0)) abort(); + continue; }