aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-08-21 03:31:33 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-21 03:31:33 -0700
commit1b8f5697929812d4c7abd0edff8ad1e8f12b4e14 (patch)
treebed94f76f06f42e1c8c28bc2f4b4133a67f4d9b9 /src/bun.js
parent183b818462663cbd4828a92733975eb0a831bb39 (diff)
downloadbun-1b8f5697929812d4c7abd0edff8ad1e8f12b4e14.tar.gz
bun-1b8f5697929812d4c7abd0edff8ad1e8f12b4e14.tar.zst
bun-1b8f5697929812d4c7abd0edff8ad1e8f12b4e14.zip
Fix memory leak in `buffer.toString("hex")` (#4235)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/webcore/encoding.zig6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/bun.js/webcore/encoding.zig b/src/bun.js/webcore/encoding.zig
index 32efb3168..890dad7bd 100644
--- a/src/bun.js/webcore/encoding.zig
+++ b/src/bun.js/webcore/encoding.zig
@@ -866,12 +866,14 @@ pub const Encoder = struct {
}
var str = bun.String.createUninitialized(.latin1, len) orelse return ZigString.init("Out of memory").toErrorInstance(global);
+ defer str.deref();
+
strings.copyLatin1IntoASCII(@constCast(str.latin1()), input);
return str.toJS(global);
},
.latin1 => {
var str = bun.String.createUninitialized(.latin1, len) orelse return ZigString.init("Out of memory").toErrorInstance(global);
-
+ defer str.deref();
@memcpy(@constCast(str.latin1()), input_ptr[0..len]);
return str.toJS(global);
@@ -901,6 +903,8 @@ pub const Encoder = struct {
.hex => {
var str = bun.String.createUninitialized(.latin1, len * 2) orelse return ZigString.init("Out of memory").toErrorInstance(global);
+ defer str.deref();
+
var output = @constCast(str.latin1());
const wrote = strings.encodeBytesToHex(output, input);
std.debug.assert(wrote == output.len);