From c8e153c124fb606aed507ba99eda424048e24112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sun, 12 Feb 2017 17:32:33 +0100 Subject: view: improve handling of long sequences of combining characters They will still not be displayed correctly, but at least they should no longer cause memory errors. --- view.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/view.c b/view.c index e7dae36..d681656 100644 --- a/view.c +++ b/view.c @@ -370,6 +370,8 @@ void view_draw(View *view) { /* NUL byte encountered, store it and continue */ cell = (Cell){ .data = "\x00", .len = 1, .width = 2 }; } else { + if (len >= sizeof(cell.data)) + len = sizeof(cell.data)-1; for (size_t i = 0; i < len; i++) cell.data[i] = cur[i]; cell.data[len] = '\0'; @@ -384,7 +386,7 @@ void view_draw(View *view) { cell = (Cell){ .data = "\n", .len = 2, .width = 1 }; } - if (cell.width == 0 && prev_cell.len + cell.len < sizeof(cell.len)) { + if (cell.width == 0 && prev_cell.len + cell.len < sizeof(cell.data)) { prev_cell.len += cell.len; strcat(prev_cell.data, cell.data); } else { -- cgit v1.2.3