diff options
author | 2023-05-05 17:16:47 -0700 | |
---|---|---|
committer | 2023-05-05 17:16:47 -0700 | |
commit | f95a81e05de50debf60771c46111d115334afe96 (patch) | |
tree | 7185472fe7a7484452a6ac6f84ec89ed40911879 | |
parent | c3d512f27e76f2e877b8843a3a420ae06237a8a1 (diff) | |
download | bun-f95a81e05de50debf60771c46111d115334afe96.tar.gz bun-f95a81e05de50debf60771c46111d115334afe96.tar.zst bun-f95a81e05de50debf60771c46111d115334afe96.zip |
[napi] Fix crash in `napi_create_external_buffer`
This impacted LightningCSS when garbage collection ran. cc @devongovett
-rw-r--r-- | src/bun.js/base.zig | 2 | ||||
-rw-r--r-- | src/napi/napi.zig | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig index da9501541..7fe37dd97 100644 --- a/src/bun.js/base.zig +++ b/src/bun.js/base.zig @@ -2129,7 +2129,7 @@ pub const ExternalBuffer = struct { } pub fn toJS(this: *ExternalBuffer, ctx: *JSC.JSGlobalObject) JSC.JSValue { - return JSC.JSValue.createBufferWithCtx(ctx, this.buf, this.ctx, ExternalBuffer_deallocator); + return JSC.JSValue.createBufferWithCtx(ctx, this.buf, this, ExternalBuffer_deallocator); } pub fn toArrayBuffer(this: *ExternalBuffer, ctx: *JSC.JSGlobalObject) JSC.JSValue { diff --git a/src/napi/napi.zig b/src/napi/napi.zig index d5c2c76d5..ceee2caa4 100644 --- a/src/napi/napi.zig +++ b/src/napi/napi.zig @@ -1150,7 +1150,7 @@ pub export fn napi_fatal_error(location_ptr: ?[*:0]const u8, location_len: usize bun.Global.panic("napi: {s}", .{message}); } pub export fn napi_create_buffer(env: napi_env, length: usize, data: ?**anyopaque, result: *napi_value) napi_status { - log("napi_create_buffer", .{}); + log("napi_create_buffer: {d}", .{length}); var buffer = JSC.JSValue.createBufferFromLength(env, length); if (length > 0) { if (data) |ptr| { @@ -1161,8 +1161,8 @@ pub export fn napi_create_buffer(env: napi_env, length: usize, data: ?**anyopaqu return .ok; } pub export fn napi_create_external_buffer(env: napi_env, length: usize, data: ?*anyopaque, finalize_cb: napi_finalize, finalize_hint: ?*anyopaque, result: *napi_value) napi_status { - log("napi_create_external_buffer", .{}); - var buf = JSC.ExternalBuffer.create(finalize_hint, @ptrCast([*]u8, data.?)[0..length], env, finalize_cb, env.bunVM().allocator) catch { + log("napi_create_external_buffer: {d}", .{length}); + var buf = JSC.ExternalBuffer.create(finalize_hint, @ptrCast([*]u8, data.?)[0..length], env, finalize_cb, bun.default_allocator) catch { return genericFailure(); }; @@ -1170,7 +1170,7 @@ pub export fn napi_create_external_buffer(env: napi_env, length: usize, data: ?* return .ok; } pub export fn napi_create_buffer_copy(env: napi_env, length: usize, data: [*]u8, result_data: ?*?*anyopaque, result: *napi_value) napi_status { - log("napi_create_buffer_copy", .{}); + log("napi_create_buffer_copy: {d}", .{length}); var buffer = JSC.JSValue.createBufferFromLength(env, length); if (buffer.asArrayBuffer(env)) |array_buf| { if (length > 0) { |