From: Michael D. Lowis Date: Tue, 3 Jul 2018 17:36:36 +0000 (-0400) Subject: fixed bad memory handling in view when clearing rows X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=13c0ad3e4b0b67f21a27cb6f0e6d06f92854f042;p=projs%2Ftide.git fixed bad memory handling in view when clearing rows --- 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; } }