diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-02-12 17:32:33 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-02-12 17:32:33 +0100 |
| commit | c8e153c124fb606aed507ba99eda424048e24112 (patch) | |
| tree | ef3fb8df33b7e50c5ee3a5164dbdd642065adc57 /view.c | |
| parent | 99d1964a6c2ae7e826b00128d5a201ae64d5a97f (diff) | |
| download | vis-c8e153c124fb606aed507ba99eda424048e24112.tar.gz vis-c8e153c124fb606aed507ba99eda424048e24112.tar.xz | |
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.
Diffstat (limited to 'view.c')
| -rw-r--r-- | view.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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 { |
