From fee0c5a6dc9314724b60f1e2057b764d45256e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sun, 14 Sep 2014 00:15:35 +0200 Subject: Fix clang static analyzer warnings --- window.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index 7329077..eb1c8e7 100644 --- a/window.c +++ b/window.c @@ -106,7 +106,7 @@ static void window_clear(Win *win) { prev->next = line; prev = line; } - win->bottomline = prev; + win->bottomline = prev ? prev : win->topline; win->line = win->topline; win->col = 0; } @@ -338,11 +338,13 @@ void window_draw(Win *win) { Char c; /* current selection */ Filerange sel = window_selection_get(win); + /* syntax definition to use */ + Syntax *syntax = win->syntax; /* matched tokens for each syntax rule */ - regmatch_t match[SYNTAX_RULES][1]; - if (win->syntax) { - for (int i = 0; i < LENGTH(win->syntax->rules); i++) { - SyntaxRule *rule = &win->syntax->rules[i]; + regmatch_t match[syntax ? LENGTH(syntax->rules) : 1][1]; + if (syntax) { + for (int i = 0; i < LENGTH(syntax->rules); i++) { + SyntaxRule *rule = &syntax->rules[i]; if (!rule->rule) break; if (regexec(&rule->regex, cur, 1, match[i], 0) || @@ -357,10 +359,10 @@ void window_draw(Win *win) { int attrs = COLOR_PAIR(0) | A_NORMAL; - if (win->syntax) { + if (syntax) { size_t off = cur - text; /* number of already processed bytes */ - for (int i = 0; i < LENGTH(win->syntax->rules); i++) { - SyntaxRule *rule = &win->syntax->rules[i]; + for (int i = 0; i < LENGTH(syntax->rules); i++) { + SyntaxRule *rule = &syntax->rules[i]; if (!rule->rule) break; if (match[i][0].rm_so == -1) -- cgit v1.2.3