From e3adedf6e691416a348aff9945d992671a5f403d Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 9 May 2022 20:50:06 -0700 Subject: [PATCH] fix a couple memory leaks --- src/terminal/Terminal.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 544772fd5..64702d7f4 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -374,6 +374,12 @@ pub fn eraseDisplay( cell.char = 0; } + // Remaining lines are deallocated + if (self.cursor.y + 1 < self.screen.items.len) { + for (self.screen.items[self.cursor.y + 1 .. self.screen.items.len]) |*below| + below.deinit(alloc); + } + // Shrink self.screen.shrinkRetainingCapacity(self.cursor.y + 1); }, @@ -555,6 +561,10 @@ pub fn scrollDown(self: *Terminal, alloc: Allocator) !void { // Add one more item if we aren't at the max if (self.screen.items.len < self.rows) { self.screen.items.len += 1; + } else { + // We have the max, we need to deinitialize the last row because + // we're going to overwrite it. + self.screen.items[self.screen.items.len - 1].deinit(alloc); } // Shift everything down