aboutsummaryrefslogtreecommitdiff
path: root/view.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-04-03 10:55:59 +0200
committerMarc André Tanner <mat@brain-dump.org>2016-04-03 13:17:24 +0200
commit5b018a537d52d90c630deb9fa03d81c71e316ec7 (patch)
treee76a37699bcd85e03e955186f2d6dec81ef447a2 /view.c
parent09dc605ae16fc2d6d8406d7e6c29ef9e8b957802 (diff)
downloadvis-5b018a537d52d90c630deb9fa03d81c71e316ec7.tar.gz
vis-5b018a537d52d90c630deb9fa03d81c71e316ec7.tar.xz
view: make syntax coloring more robust
Do not crash if for some reason view->{start,end} have outdated values.
Diffstat (limited to 'view.c')
-rw-r--r--view.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/view.c b/view.c
index a41dac0..9dbcc3e 100644
--- 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);