aboutsummaryrefslogtreecommitdiff
path: root/src/string_immutable.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-04-27 08:37:37 -0700
committerGravatar GitHub <noreply@github.com> 2023-04-27 08:37:37 -0700
commit52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c (patch)
treed051da306f53f942892848d7fe347afde1e9cef0 /src/string_immutable.zig
parent3ee22065f019d4f37dafb4e11607478fa9bcede5 (diff)
downloadbun-52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c.tar.gz
bun-52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c.tar.zst
bun-52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c.zip
address unicode issue (#2763)
* Fix an oopsie * Another oopsie * use inline for * Fixup --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to '')
-rw-r--r--src/string_immutable.zig25
1 files changed, 8 insertions, 17 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig
index 2527b6898..f16759eaf 100644
--- a/src/string_immutable.zig
+++ b/src/string_immutable.zig
@@ -1105,29 +1105,20 @@ pub inline fn copyU16IntoU8(output_: []u8, comptime InputType: type, input_: Inp
var output_ptr = output.ptr;
if (comptime Environment.enableSIMD) {
- const last_vector_ptr = input.ptr + (@min(input.len, output.len) & ~(group - 1));
+ const end_len = (@min(input.len, output.len) & ~(group - 1));
+ const last_vector_ptr = input.ptr + end_len;
while (last_vector_ptr != input_ptr) {
const input_vec1: @Vector(group, u16) = input_ptr[0..group].*;
- output_ptr[0] = @truncate(u8, input_vec1[0]);
- output_ptr[1] = @truncate(u8, input_vec1[1]);
- output_ptr[2] = @truncate(u8, input_vec1[2]);
- output_ptr[3] = @truncate(u8, input_vec1[3]);
- output_ptr[4] = @truncate(u8, input_vec1[4]);
- output_ptr[5] = @truncate(u8, input_vec1[5]);
- output_ptr[6] = @truncate(u8, input_vec1[6]);
- output_ptr[7] = @truncate(u8, input_vec1[7]);
- output_ptr[8] = @truncate(u8, input_vec1[8]);
- output_ptr[9] = @truncate(u8, input_vec1[9]);
- output_ptr[10] = @truncate(u8, input_vec1[10]);
- output_ptr[11] = @truncate(u8, input_vec1[11]);
- output_ptr[12] = @truncate(u8, input_vec1[12]);
- output_ptr[13] = @truncate(u8, input_vec1[13]);
- output_ptr[14] = @truncate(u8, input_vec1[14]);
- output_ptr[15] = @truncate(u8, input_vec1[15]);
+ inline for (0..group) |i| {
+ output_ptr[i] = @truncate(u8, input_vec1[i]);
+ }
output_ptr += group;
input_ptr += group;
}
+
+ input.len -= end_len;
+ output.len -= end_len;
}
const last_input_ptr = input_ptr + @min(input.len, output.len);