From e8a2dc571561a1d5eb6b6207cbde71d507ad9595 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 17 Mar 2024 21:18:24 -0700 Subject: [PATCH] terminal: cleaner impl of getTopLeft(.active) --- src/terminal/PageList.zig | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/terminal/PageList.zig b/src/terminal/PageList.zig index 4905dee2c..a8da11ad0 100644 --- a/src/terminal/PageList.zig +++ b/src/terminal/PageList.zig @@ -2369,17 +2369,18 @@ pub fn getTopLeft(self: *const PageList, tag: point.Tag) Pin { // much faster because we don't need to update the top left. Under // heavy load this makes a measurable difference. .active => active: { - var page = self.pages.last.?; var rem = self.rows; - while (rem > page.data.size.rows) { + var it = self.pages.last; + while (it) |page| : (it = page.prev) { + if (rem <= page.data.size.rows) break :active .{ + .page = page, + .y = page.data.size.rows - rem, + }; + rem -= page.data.size.rows; - page = page.prev.?; // assertion: we always have enough rows for active } - break :active .{ - .page = page, - .y = page.data.size.rows - rem, - }; + unreachable; // assertion: we always have enough rows for active }, }; }