diff options
| author | 2024-02-17 13:31:45 -0400 | |
|---|---|---|
| committer | 2024-02-17 13:31:45 -0400 | |
| commit | ae5d7a0c310c7b0acd7a51e97ee46893f3d5b79e (patch) | |
| tree | 2c777053752e347b7b0f27127a17bdda97795e8d /src/display_width.zig | |
| parent | display_width tweaks (diff) | |
| download | zg-ae5d7a0c310c7b0acd7a51e97ee46893f3d5b79e.tar.gz zg-ae5d7a0c310c7b0acd7a51e97ee46893f3d5b79e.tar.xz zg-ae5d7a0c310c7b0acd7a51e97ee46893f3d5b79e.zip | |
Fixed isAsciiOnly and CodePointIterator ASCII bugs
Diffstat (limited to 'src/display_width.zig')
| -rw-r--r-- | src/display_width.zig | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/display_width.zig b/src/display_width.zig index 2ac7093..ba76052 100644 --- a/src/display_width.zig +++ b/src/display_width.zig | |||
| @@ -22,16 +22,17 @@ fn isAsciiOnly(str: []const u8) bool { | |||
| 22 | } else true; | 22 | } else true; |
| 23 | 23 | ||
| 24 | const Vec = @Vector(vec_len, u8); | 24 | const Vec = @Vector(vec_len, u8); |
| 25 | var i: usize = 0; | 25 | var remaining = str; |
| 26 | 26 | ||
| 27 | while (i < str.len) : (i += vec_len) { | 27 | while (true) { |
| 28 | if (str[i..].len < vec_len) return for (str[i..]) |b| { | 28 | if (remaining.len < vec_len) return for (remaining) |b| { |
| 29 | if (b > 127) break false; | 29 | if (b > 127) break false; |
| 30 | } else true; | 30 | } else true; |
| 31 | 31 | ||
| 32 | const v1 = str[0..vec_len].*; | 32 | const v1 = remaining[0..vec_len].*; |
| 33 | const v2: Vec = @splat(127); | 33 | const v2: Vec = @splat(127); |
| 34 | if (@reduce(.Or, v1 > v2)) return false; | 34 | if (@reduce(.Or, v1 > v2)) return false; |
| 35 | remaining = remaining[vec_len..]; | ||
| 35 | } | 36 | } |
| 36 | 37 | ||
| 37 | return true; | 38 | return true; |