aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-20 21:37:46 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-06-22 06:56:47 -0700
commit1947c6253901645f1566e01d79979d171eee418c (patch)
tree65d8a840ea13bd3134c744c8d52d293135baa56a
parent0843e383b249f9ed9b257767e904f2335b65dfc2 (diff)
downloadbun-1947c6253901645f1566e01d79979d171eee418c.tar.gz
bun-1947c6253901645f1566e01d79979d171eee418c.tar.zst
bun-1947c6253901645f1566e01d79979d171eee418c.zip
Fix assertion that checks globally allocated memory pointers
-rw-r--r--src/javascript/jsc/bindings/exports.zig10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/javascript/jsc/bindings/exports.zig b/src/javascript/jsc/bindings/exports.zig
index c70388186..fa7884a50 100644
--- a/src/javascript/jsc/bindings/exports.zig
+++ b/src/javascript/jsc/bindings/exports.zig
@@ -248,8 +248,9 @@ pub const ResolvedSource = extern struct {
const Mimalloc = @import("../../../allocators/mimalloc.zig");
-export fn ZigString__free(ptr: [*]const u8, len: usize, allocator_: ?*anyopaque) void {
+export fn ZigString__free(raw: [*]const u8, len: usize, allocator_: ?*anyopaque) void {
var allocator: std.mem.Allocator = @ptrCast(*std.mem.Allocator, @alignCast(@alignOf(*std.mem.Allocator), allocator_ orelse return)).*;
+ var ptr = ZigString.init(raw[0..len]).slice().ptr;
if (comptime Environment.allow_assert) {
std.debug.assert(Mimalloc.mi_check_owned(ptr));
}
@@ -258,11 +259,12 @@ export fn ZigString__free(ptr: [*]const u8, len: usize, allocator_: ?*anyopaque)
allocator.free(str);
}
-export fn ZigString__free_global(ptr: [*]const u8, _: usize) void {
+export fn ZigString__free_global(ptr: [*]const u8, len: usize) void {
if (comptime Environment.allow_assert) {
- std.debug.assert(Mimalloc.mi_check_owned(ptr));
+ std.debug.assert(Mimalloc.mi_check_owned(ZigString.init(ptr[0..len]).slice().ptr));
}
- Mimalloc.mi_free(@intToPtr(*anyopaque, @ptrToInt(ptr)));
+ // we must untag the string pointer
+ Mimalloc.mi_free(@intToPtr(*anyopaque, @ptrToInt(ZigString.init(ptr[0..len]).slice().ptr)));
}
export fn Zig__getAPIGlobals(count: *usize) [*]JSC.C.JSClassRef {