aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/terminal/style.zig
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-16 23:28:05 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-16 23:29:28 +0300
commit4a3302d19a2baa3a33e910e0088c24e780905b90 (patch)
treedcaf76fae1c82102d933c9225b17ca7ac5d3a847 /vendor/libghostty-vt/src/terminal/style.zig
parent550e9f8cc085f428429f5cf2da0bb2dba897e8b8 (diff)
chore: update vendored libghostty-vt
refs #276
Diffstat (limited to 'vendor/libghostty-vt/src/terminal/style.zig')
-rw-r--r--vendor/libghostty-vt/src/terminal/style.zig30
1 files changed, 30 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/terminal/style.zig b/vendor/libghostty-vt/src/terminal/style.zig
index ae9488af..720789bb 100644
--- a/vendor/libghostty-vt/src/terminal/style.zig
+++ b/vendor/libghostty-vt/src/terminal/style.zig
@@ -966,6 +966,36 @@ test "Set capacities" {
_ = Set.Layout.init(16384);
}
+test "Set zero capacity" {
+ const testing = std.testing;
+ const alloc = testing.allocator;
+
+ // A zero-capacity set is a valid special case (see Layout.init).
+ // It occurs in practice for pages with exact capacities where no
+ // cell is styled (see Page.exactRowCapacity).
+ const layout: Set.Layout = .init(0);
+ try testing.expectEqual(0, layout.total_size);
+
+ // We allocate a nonzero buffer filled with 0xFF to simulate the
+ // set being embedded in a larger structure (e.g. a Page) where
+ // other data follows it. Lookups must not probe the zero-size
+ // table: table[0] would read this adjacent memory and treat it
+ // as an item ID, leading to far out-of-bounds item reads.
+ const buf = try alloc.alignedAlloc(u8, Set.base_align, 64);
+ defer alloc.free(buf);
+ @memset(buf, 0xFF);
+
+ var set = Set.init(.init(buf), layout, .{});
+
+ const style: Style = .{ .flags = .{ .bold = true } };
+ try testing.expectEqual(null, set.lookup(buf, style));
+ try testing.expectError(error.OutOfMemory, set.add(buf, style));
+ try testing.expectEqual(0, set.count());
+
+ // The adjacent memory must be untouched.
+ for (buf) |b| try testing.expectEqual(0xFF, b);
+}
+
test "Style HTML formatting basic bold" {
const testing = std.testing;
const alloc = testing.allocator;