From d5ab772b666678aeb6aa609d571eee6949cac538 Mon Sep 17 00:00:00 2001 From: Khang Nguyen Duy Date: Sat, 21 Sep 2024 21:46:25 +0700 Subject: [PATCH] fix(terminal/PageList): ensure enough pages before first page reuse Running alacritty/vtebench on some machines causes Ghostty to fail on `assert(first != last)` when trying to grow scrollback. We now make sure we have enough pages before trying to reuse pages. --- src/terminal/PageList.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/terminal/PageList.zig b/src/terminal/PageList.zig index 705d6ba2d..64580dd9a 100644 --- a/src/terminal/PageList.zig +++ b/src/terminal/PageList.zig @@ -1694,7 +1694,7 @@ pub fn grow(self: *PageList) !?*List.Node { // If allocation would exceed our max size, we prune the first page. // We don't need to reallocate because we can simply reuse that first // page. - if (self.page_size + PagePool.item_size > self.maxSize()) prune: { + if (self.pages.len > 1 and self.page_size + PagePool.item_size > self.maxSize()) prune: { // If we need to add more memory to ensure our active area is // satisfied then we do not prune. if (self.growRequiredForActive()) break :prune;