aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ashcon Partovi <ashcon@partovi.net> 2023-10-13 13:31:12 -0700
committerGravatar Ashcon Partovi <ashcon@partovi.net> 2023-10-16 15:14:15 -0700
commit2996ef71560ee4e9bd982fdadd7ff5ce32bb3e1c (patch)
tree4c05c119d22ea42b4b2f78cf89ace04c747372e9
parent2b1f3438e6b928f57f2fd0e74ec6043097565135 (diff)
downloadbun-2996ef71560ee4e9bd982fdadd7ff5ce32bb3e1c.tar.gz
bun-2996ef71560ee4e9bd982fdadd7ff5ce32bb3e1c.tar.zst
bun-2996ef71560ee4e9bd982fdadd7ff5ce32bb3e1c.zip
Fix #6467
-rw-r--r--src/bun.js/webcore/encoding.zig6
-rw-r--r--test/regression/issue/006467.test.ts7
2 files changed, 10 insertions, 3 deletions
diff --git a/src/bun.js/webcore/encoding.zig b/src/bun.js/webcore/encoding.zig
index ca0f44e6a..18e70b261 100644
--- a/src/bun.js/webcore/encoding.zig
+++ b/src/bun.js/webcore/encoding.zig
@@ -765,7 +765,7 @@ pub const Encoder = struct {
export fn Bun__encoding__writeLatin1(input: [*]const u8, len: usize, to: [*]u8, to_len: usize, encoding: u8) usize {
return switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) {
.utf8 => writeU8(input, len, to, to_len, .utf8),
- .latin1 => writeU8(input, len, to, to_len, .ascii),
+ .latin1 => writeU8(input, len, to, to_len, .latin1),
.ascii => writeU8(input, len, to, to_len, .ascii),
.ucs2 => writeU8(input, len, to, to_len, .utf16le),
.utf16le => writeU8(input, len, to, to_len, .utf16le),
@@ -967,13 +967,13 @@ pub const Encoder = struct {
// if (comptime encoding.isBinaryToText()) {}
switch (comptime encoding) {
- .buffer => {
+ .buffer, .latin1 => {
const written = @min(len, to_len);
@memcpy(to_ptr[0..written], input[0..written]);
return written;
},
- .latin1, .ascii => {
+ .ascii => {
const written = @min(len, to_len);
var to = to_ptr[0..written];
diff --git a/test/regression/issue/006467.test.ts b/test/regression/issue/006467.test.ts
new file mode 100644
index 000000000..9a9ad8a2d
--- /dev/null
+++ b/test/regression/issue/006467.test.ts
@@ -0,0 +1,7 @@
+import { test, expect } from "bun:test";
+
+test("write(value >= 0x80)", () => {
+ const buffer = Buffer.alloc(1);
+ buffer.write("\x80", "binary");
+ expect(buffer[0]).toBe(0x80);
+});