@@ -286,6 +286,15 @@ grid_compare(struct grid *ga, struct grid *gb)
286
286
return (0 );
287
287
}
288
288
289
+ /* Trim lines from the history. */
290
+ static void
291
+ grid_trim_history (struct grid * gd , u_int ny )
292
+ {
293
+ grid_free_lines (gd , 0 , ny );
294
+ memmove (& gd -> linedata [0 ], & gd -> linedata [ny ],
295
+ (gd -> hsize + gd -> sy - ny ) * (sizeof * gd -> linedata ));
296
+ }
297
+
289
298
/*
290
299
* Collect lines from the history if at the limit. Free the top (oldest) 10%
291
300
* and shift up.
@@ -308,9 +317,7 @@ grid_collect_history(struct grid *gd)
308
317
* Free the lines from 0 to ny then move the remaining lines over
309
318
* them.
310
319
*/
311
- grid_free_lines (gd , 0 , ny );
312
- memmove (& gd -> linedata [0 ], & gd -> linedata [ny ],
313
- (gd -> hsize + gd -> sy - ny ) * (sizeof * gd -> linedata ));
320
+ grid_trim_history (gd , ny );
314
321
315
322
gd -> hsize -= ny ;
316
323
if (gd -> hscrolled > gd -> hsize )
@@ -340,9 +347,7 @@ grid_scroll_history(struct grid *gd, u_int bg)
340
347
void
341
348
grid_clear_history (struct grid * gd )
342
349
{
343
- grid_free_lines (gd , 0 , gd -> hsize );
344
- memmove (& gd -> linedata [0 ], & gd -> linedata [gd -> hsize ],
345
- gd -> sy * (sizeof * gd -> linedata ));
350
+ grid_trim_history (gd , gd -> hsize );
346
351
347
352
gd -> hscrolled = 0 ;
348
353
gd -> hsize = 0 ;
0 commit comments