From d9028b23944172cea94e70d5cf3d089e537716a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 31 May 2020 12:41:35 +0200 Subject: [PATCH] vt: utf8: use mbtowc() instead of mbrtowc() This is slightly faster, since we don't need to initialize an mbstate_t struct (using mbrtowc() with a NULL-pointer for 'ps' also works). Also, avoid a branch by setting wc=0 and then ignoring the result/error code from mbtowc(). --- vt.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/vt.c b/vt.c index 6472d173..0db90069 100644 --- a/vt.c +++ b/vt.c @@ -512,14 +512,8 @@ action_utf8_entry(struct terminal *term, uint8_t c) static void action_utf8_print(struct terminal *term, uint8_t c) { - /* Convert to wchar */ - mbstate_t ps = {}; - wchar_t wc; - size_t count = mbrtowc( - &wc, (const char *)term->vt.utf8.data, term->vt.utf8.idx, &ps); - - if ((ssize_t)count < 0) - wc = 0; + wchar_t wc = 0; + mbtowc(&wc, (const char *)term->vt.utf8.data, term->vt.utf8.idx); int width = wcwidth(wc);