From 13c0ad3e4b0b67f21a27cb6f0e6d06f92854f042 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 3 Jul 2018 13:36:36 -0400 Subject: [PATCH] fixed bad memory handling in view when clearing rows --- lib/view.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/view.c b/lib/view.c index 30168c1..0d0cfb7 100644 --- a/lib/view.c +++ b/lib/view.c @@ -51,9 +51,17 @@ static Sel* getsel(View* view) { static void clear_rows(View* view, size_t startidx) { if (view->rows) { - for (size_t i = startidx; i < view->nrows; i++) + /* Free and clear invalid rows now */ + for (size_t i = startidx; i < view->nrows; i++) { free(view->rows[i]); - view->rows = realloc(view->rows, startidx); + view->rows[i] = NULL; + } + /* grow row array if needed */ + if (startidx > view->nrows) + view->rows = realloc(view->rows, startidx); + /* zero out newly created slots */ + for (size_t i = view->nrows; i < startidx; i++) + view->rows[i] = NULL; view->nrows = startidx; } } -- 2.49.0