From e7d53020b44c33dfee9080db142e973c434ba8a5 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 11 Jul 2018 06:51:39 +0000 Subject: [PATCH] Helper function to shorten history. --- grid.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/grid.c b/grid.c index dcbb5a48..dcfd95fe 100644 --- a/grid.c +++ b/grid.c @@ -286,6 +286,15 @@ grid_compare(struct grid *ga, struct grid *gb) return (0); } +/* Trim lines from the history. */ +static void +grid_trim_history(struct grid *gd, u_int ny) +{ + grid_free_lines(gd, 0, ny); + memmove(&gd->linedata[0], &gd->linedata[ny], + (gd->hsize + gd->sy - ny) * (sizeof *gd->linedata)); +} + /* * Collect lines from the history if at the limit. Free the top (oldest) 10% * and shift up. @@ -308,9 +317,7 @@ grid_collect_history(struct grid *gd) * Free the lines from 0 to ny then move the remaining lines over * them. */ - grid_free_lines(gd, 0, ny); - memmove(&gd->linedata[0], &gd->linedata[ny], - (gd->hsize + gd->sy - ny) * (sizeof *gd->linedata)); + grid_trim_history(gd, ny); gd->hsize -= ny; if (gd->hscrolled > gd->hsize) @@ -340,9 +347,7 @@ grid_scroll_history(struct grid *gd, u_int bg) void grid_clear_history(struct grid *gd) { - grid_free_lines(gd, 0, gd->hsize); - memmove(&gd->linedata[0], &gd->linedata[gd->hsize], - gd->sy * (sizeof *gd->linedata)); + grid_trim_history(gd, gd->hsize); gd->hscrolled = 0; gd->hsize = 0;