summaryrefslogtreecommitdiff
path: root/src/sam_edit.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 17:46:11 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:17 -0300
commite3e605bd33fc5be56cb7ec842449718bc5337a75 (patch)
tree85a9d70524ecb3358bc3f92225851c6abd249a10 /src/sam_edit.zig
parent290584fc1127d017603c7c98c9aab27c0523a2cf (diff)
downloadpardes-e3e605bd33fc5be56cb7ec842449718bc5337a75.tar.gz
pardes-e3e605bd33fc5be56cb7ec842449718bc5337a75.zip
A class with non-ASCII runes matches them: [éa-z] is taken as (é|[a-z]), a range up to 256 runes spelled out
mvzr's classes hold bytes, and it refused a multibyte member as a bad expression. Rewriting the class before compiling, as ^a|^b already is, needs no mvzr patch; runes that differ only in their last byte go as one alternative (\xc3[\xa0-\xbf] for [à-ÿ]) so a 256-rune range fits the 512-operation limit, which counts the pattern as rewritten. A wider range and [^é] are refused, naming why. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/sam_edit.zig')
-rw-r--r--src/sam_edit.zig2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/sam_edit.zig b/src/sam_edit.zig
index ea1105bd..0f317a83 100644
--- a/src/sam_edit.zig
+++ b/src/sam_edit.zig
@@ -461,6 +461,8 @@ const Exec = struct {
return regexp.Regex.compile(pat) catch |err| switch (err) {
error.Anchor => fail(ex.why, "{s}", .{regexp.Regex.e_anchor}),
error.TooLong => fail(ex.why, "{s}", .{regexp.Regex.e_long}),
+ error.WideRange => fail(ex.why, "{s}", .{regexp.Regex.e_wide}),
+ error.NegatedRunes => fail(ex.why, "{s}", .{regexp.Regex.e_negated}),
error.Bad => fail(ex.why, "bad regexp in {c} command", .{c}),
};
}