From 8f0dcb9d913df5ce62eb84969ff23ad876711bd1 Mon Sep 17 00:00:00 2001 From: Qwerasd Date: Tue, 24 Dec 2024 21:24:15 -0500 Subject: [PATCH] fix: memory corruption in `Screen.cursorAbsolute` We call `cursorChangePin` which may invalidate the provided pin if it needs to adjust the page capacity, and as such we should consider the pin we pass in to it invalid afterwards, and access it through cursor instead. --- src/terminal/Screen.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/terminal/Screen.zig b/src/terminal/Screen.zig index 1a8e4b75d..93958d427 100644 --- a/src/terminal/Screen.zig +++ b/src/terminal/Screen.zig @@ -620,7 +620,7 @@ pub fn cursorAbsolute(self: *Screen, x: size.CellCountInt, y: size.CellCountInt) self.cursor.x = x; // Must be set before cursorChangePin self.cursor.y = y; self.cursorChangePin(page_pin); - const page_rac = page_pin.rowAndCell(); + const page_rac = self.cursor.page_pin.rowAndCell(); self.cursor.page_row = page_rac.row; self.cursor.page_cell = page_rac.cell; }