Files
ghostty/pkg/oniguruma/match_param.zig
Mitchell Hashimoto 3dde6e2559 terminal: bound link regex search work with Oniguruma retry limits
Fixes #11177

Use per-search Oniguruma match params (retry_limit_in_search) in
StringMap-backed link detection to avoid pathological backtracking hangs
on very long lines.

The units are ticks in the internal loop so its kind of opaque but
this seems to still match some very long URLs. The test case in question
was a 169K character line (which is now rejected).
2026-03-04 21:02:55 -08:00

24 lines
639 B
Zig

const c = @import("c.zig").c;
const errors = @import("errors.zig");
const Error = errors.Error;
pub const MatchParam = struct {
value: *c.OnigMatchParam,
pub fn init() !MatchParam {
const value = c.onig_new_match_param() orelse return Error.Memory;
return .{ .value = value };
}
pub fn deinit(self: *MatchParam) void {
c.onig_free_match_param(self.value);
}
pub fn setRetryLimitInSearch(self: *MatchParam, limit: usize) !void {
_ = try errors.convertError(c.onig_set_retry_limit_in_search_of_match_param(
self.value,
@intCast(limit),
));
}
};