vis

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

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

commit d80db5b6551effad929b7ecb2a36ebe6293ed4f3
parent d341361f1ea587751c3a7cf941437e7b8aa09221
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Sun,  3 Apr 2016 10:55:59 +0200

view: make syntax coloring more robust

Do not crash if for some reason view->{start,end} have outdated values.

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

diff --git a/view.c b/view.c @@ -141,7 +141,7 @@ static void view_syntax_color(View *view) { /* absolute position to start syntax highlighting */ const size_t lexer_start = view->start >= lexer_before_max ? view->start - lexer_before_max : 0; /* number of bytes used for syntax highlighting before visible are */ - const size_t lexer_before = view->start - lexer_start; + size_t lexer_before = view->start - lexer_start; /* number of bytes to read in one go */ const size_t text_size = lexer_before + (view->end - view->start); /* current buffer to work with */ @@ -150,6 +150,8 @@ static void view_syntax_color(View *view) { const size_t text_len = text_bytes_get(view->text, lexer_start, text_size, text); /* NUL terminate text section */ text[text_len] = '\0'; + if (text_len < lexer_before) + lexer_before = text_len; lua_getfield(L, -1, "load"); lua_pushstring(L, view->lexer_name);