aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/webcore/encoding.zig
diff options
context:
space:
mode:
authorGravatar szatkus <szatkus@gmail.com> 2022-07-27 20:42:39 +0200
committerGravatar GitHub <noreply@github.com> 2022-07-27 11:42:39 -0700
commita00eb95e29a4ca501939a7148066b871f83bac03 (patch)
treea8e145d07041f5a025a1adefb762e2d82a618599 /src/bun.js/webcore/encoding.zig
parente468a618114998d075c6dcf7fa920004ab30e430 (diff)
downloadbun-a00eb95e29a4ca501939a7148066b871f83bac03.tar.gz
bun-a00eb95e29a4ca501939a7148066b871f83bac03.tar.zst
bun-a00eb95e29a4ca501939a7148066b871f83bac03.zip
#609 Don't truncate ascii buffers to 7-bit (#775)
Diffstat (limited to 'src/bun.js/webcore/encoding.zig')
-rw-r--r--src/bun.js/webcore/encoding.zig19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/bun.js/webcore/encoding.zig b/src/bun.js/webcore/encoding.zig
index 690b2e86d..b3bea11e5 100644
--- a/src/bun.js/webcore/encoding.zig
+++ b/src/bun.js/webcore/encoding.zig
@@ -838,9 +838,6 @@ pub const Encoder = struct {
export fn Bun__encoding__toStringASCII(input: [*]const u8, len: usize, globalObject: *JSC.JSGlobalObject) JSValue {
return toString(input, len, globalObject, .ascii);
}
- export fn Bun__encoding__toStringLatin1(input: [*]const u8, len: usize, globalObject: *JSC.JSGlobalObject) JSValue {
- return toString(input, len, globalObject, .latin1);
- }
export fn Bun__encoding__toStringHex(input: [*]const u8, len: usize, globalObject: *JSC.JSGlobalObject) JSValue {
return toString(input, len, globalObject, .hex);
@@ -866,7 +863,7 @@ pub const Encoder = struct {
const allocator = VirtualMachine.vm.allocator;
switch (comptime encoding) {
- .latin1, .ascii => {
+ .ascii => {
var to = allocator.alloc(u8, len) catch return ZigString.init("Out of memory").toErrorInstance(global);
@memcpy(to.ptr, input_ptr, to.len);
@@ -878,6 +875,13 @@ pub const Encoder = struct {
return ZigString.init(to).toExternalValue(global);
},
+ .latin1 => {
+ var to = allocator.alloc(u8, len) catch return ZigString.init("Out of memory").toErrorInstance(global);
+
+ @memcpy(to.ptr, input_ptr, to.len);
+
+ return ZigString.init(to).toExternalValue(global);
+ },
.buffer, .utf8 => {
// JSC only supports UTF-16 strings for non-ascii text
const converted = strings.toUTF16Alloc(allocator, input, false) catch return ZigString.init("Out of memory").toErrorInstance(global);
@@ -1109,12 +1113,8 @@ pub const Encoder = struct {
},
.latin1, .ascii => {
var to = allocator.alloc(u8, len) catch return &[_]u8{};
- @memcpy(to.ptr, input, len);
- // Hoping this gets auto vectorized
- for (to[0..len]) |c, i| {
- to[i] = @as(u8, @truncate(u7, c));
- }
+ @memcpy(to.ptr, input, len);
return to;
},
@@ -1257,7 +1257,6 @@ pub const Encoder = struct {
_ = Bun__encoding__toStringUTF16;
_ = Bun__encoding__toStringUTF8;
_ = Bun__encoding__toStringASCII;
- _ = Bun__encoding__toStringLatin1;
_ = Bun__encoding__toStringHex;
_ = Bun__encoding__toStringBase64;
_ = Bun__encoding__toStringURLSafeBase64;