From d0efde07da335310b2e9da3bb9a690c2123fbc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sun, 11 Mar 2018 22:02:30 +0100 Subject: Reset parsing state after mbrtowc(3) failure The standard says "if an encoding error occurs ... the conversion state is unspecified". --- view.c | 1 + 1 file changed, 1 insertion(+) (limited to 'view.c') diff --git a/view.c b/view.c index fafabc5..773f3a7 100644 --- a/view.c +++ b/view.c @@ -352,6 +352,7 @@ void view_draw(View *view) { /* ok, we encountered an invalid multibyte sequence, * replace it with the Unicode Replacement Character * (FFFD) and skip until the start of the next utf8 char */ + mbstate = (mbstate_t){0}; for (len = 1; rem > len && !ISUTF8(cur[len]); len++); cell = (Cell){ .data = "\xEF\xBF\xBD", .len = len, .width = 1 }; } else if (len == (size_t)-2) { -- cgit v1.2.3