summaryrefslogtreecommitdiff
path: root/src/display_width.zig
diff options
context:
space:
mode:
authorGravatar Jose Colon Rodriguez2024-02-17 13:31:45 -0400
committerGravatar Jose Colon Rodriguez2024-02-17 13:31:45 -0400
commitae5d7a0c310c7b0acd7a51e97ee46893f3d5b79e (patch)
tree2c777053752e347b7b0f27127a17bdda97795e8d /src/display_width.zig
parentdisplay_width tweaks (diff)
downloadzg-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.zig9
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;