From: Michael D. Lowis Date: Fri, 20 Apr 2018 01:17:47 +0000 (-0400) Subject: fixed segfault in scrolling X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=5383b4a1e3cb6fbdfa09c3c90e713a6ee7e25aa0;p=projs%2Ftide.git fixed segfault in scrolling --- diff --git a/lib/view.c b/lib/view.c index aec966d..422a247 100644 --- a/lib/view.c +++ b/lib/view.c @@ -108,6 +108,7 @@ static void resize(View* view, size_t width, size_t nrows, size_t off) { clear_rows(view); view->width = width; view->nvisible = nrows; + view->index = 0; off = buf_bol(&(view->buffer), off); bool first_line_done = false; for (size_t i = 0; nrows > 0; i++) { @@ -292,20 +293,17 @@ static void scroll_up(View* view) { if (view->index > 0) view->index--; else if (view->rows[0]->off > 0) - resize(view, view->width, view->nrows, (view->rows[0]->off - 1)); + resize(view, view->width, view->nvisible, (view->rows[0]->off - 1)); } static void scroll_dn(View* view) { size_t nleft = (view->nrows - view->index); if (nleft <= view->nvisible) { size_t off = view->rows[view->index+1]->off; - resize(view, view->width, view->nrows, off); + resize(view, view->width, view->nvisible, off); } else { view->index++; } - - printf("%ld <= %ld\n", view->nvisible, (view->nrows - view->index)); - assert(view->nvisible <= (view->nrows - view->index)); } void view_scroll(View* view, int move) {