From 78fc57998065874b7e4a7d32d6286917e521e0d5 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 97a1f56dd..e5b12ef8d 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; }