mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-04-06 07:38:21 +00:00
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).
24 lines
639 B
Zig
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),
|
|
));
|
|
}
|
|
};
|