From a7e6f1a07040c150ac69bed24b8e9841425d4c95 Mon Sep 17 00:00:00 2001 From: Qwerasd Date: Mon, 24 Jun 2024 20:09:37 -0400 Subject: [PATCH] fix(terminal/PageList): clear cells in truncated rows during clone Previously this was a memory leak, styles and graphemes in these rows were never reclaimed. --- src/terminal/PageList.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/terminal/PageList.zig b/src/terminal/PageList.zig index 4d1ac5d2c..523ca3897 100644 --- a/src/terminal/PageList.zig +++ b/src/terminal/PageList.zig @@ -490,6 +490,12 @@ pub fn clone( src.* = old_dst; dirty.setValue(i, dirty.isSet(i + chunk.start)); } + + // We need to clear the rows we're about to truncate. + for (len..page.data.size.rows) |i| { + page.data.clearCells(&rows[i], 0, page.data.size.cols); + } + page.data.size.rows = @intCast(len); total_rows += len;