vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

commit 35b3ab7622ce26a7db58fe2f3a850b0afe763ce1
parent 2e304150297751d40d1429da0f5489afe31a4ba6
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Tue,  7 Jul 2015 09:55:00 +0200

view: properly NUL terminate whitespace replacement symbols

This should not be a problem in practice, since cell->data is large
enough anyway.

Diffstat:
Mview.c | 6+++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/view.c b/view.c @@ -165,7 +165,7 @@ static bool view_addch(View *view, Cell *cell) { cell->len = w == 0 ? 1 : 0; int t = w == 0 ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL; - strncpy(cell->data, view->symbols[t]->symbol, sizeof(cell->data)); + strncpy(cell->data, view->symbols[t]->symbol, sizeof(cell->data)-1); if (view->symbols[t]->color) cell->attr = view->symbols[t]->color->attr | (cell->attr & A_REVERSE); view->line->cells[view->col] = *cell; @@ -185,7 +185,7 @@ static bool view_addch(View *view, Cell *cell) { view->line->lineno = lineno; } - strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_EOL]->symbol, sizeof(cell->data)); + strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_EOL]->symbol, sizeof(cell->data)-1); if (view->symbols[SYNTAX_SYMBOL_EOL]->color) cell->attr = view->symbols[SYNTAX_SYMBOL_EOL]->color->attr; @@ -213,7 +213,7 @@ static bool view_addch(View *view, Cell *cell) { } if (cell->data[0] == ' ') { - strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_SPACE]->symbol, sizeof(cell->data)); + strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_SPACE]->symbol, sizeof(cell->data)-1); if (view->symbols[SYNTAX_SYMBOL_SPACE]->color) cell->attr = view->symbols[SYNTAX_SYMBOL_SPACE]->color->attr | (cell->attr & A_REVERSE);