diff options
-rw-r--r-- | src/bun.js/event_loop.zig | 4 | ||||
-rw-r--r-- | src/bun.js/node/node_fs.zig | 12 | ||||
-rw-r--r-- | src/napi/napi.zig | 6 |
3 files changed, 18 insertions, 4 deletions
diff --git a/src/bun.js/event_loop.zig b/src/bun.js/event_loop.zig index f1367c239..73f8c368e 100644 --- a/src/bun.js/event_loop.zig +++ b/src/bun.js/event_loop.zig @@ -347,6 +347,10 @@ pub const ConcurrentTask = struct { return created; } + pub fn createFrom(task: anytype) *ConcurrentTask { + return create(Task.init(task)); + } + pub fn fromCallback(ptr: anytype, comptime callback: anytype) *ConcurrentTask { return create(ManagedTask.New(std.meta.Child(@TypeOf(ptr)), callback).init(ptr)); } diff --git a/src/bun.js/node/node_fs.zig b/src/bun.js/node/node_fs.zig index 4f9e2bf68..33b3589b3 100644 --- a/src/bun.js/node/node_fs.zig +++ b/src/bun.js/node/node_fs.zig @@ -93,6 +93,10 @@ pub const AsyncReaddirTask = struct { var node_fs = NodeFS{}; this.result = node_fs.readdir(this.args, .promise); + if (this.result == .err) { + this.result.err.path = bun.default_allocator.dupe(u8, this.result.err.path) catch ""; + } + this.globalObject.bunVMConcurrently().eventLoop().enqueueTaskConcurrent(JSC.ConcurrentTask.fromCallback(this, runFromJSThread)); } @@ -370,6 +374,10 @@ pub const AsyncReadFileTask = struct { var node_fs = NodeFS{}; this.result = node_fs.readFile(this.args, .promise); + if (this.result == .err) { + this.result.err.path = bun.default_allocator.dupe(u8, this.result.err.path) catch ""; + } + this.globalObject.bunVMConcurrently().eventLoop().enqueueTaskConcurrent(JSC.ConcurrentTask.fromCallback(this, runFromJSThread)); } @@ -460,6 +468,10 @@ pub const AsyncCopyFileTask = struct { var node_fs = NodeFS{}; this.result = node_fs.copyFile(this.args, .promise); + if (this.result == .err) { + this.result.err.path = bun.default_allocator.dupe(u8, this.result.err.path) catch ""; + } + this.globalObject.bunVMConcurrently().eventLoop().enqueueTaskConcurrent(JSC.ConcurrentTask.fromCallback(this, runFromJSThread)); } diff --git a/src/napi/napi.zig b/src/napi/napi.zig index 1d3e3e811..d143fe1b3 100644 --- a/src/napi/napi.zig +++ b/src/napi/napi.zig @@ -1215,8 +1215,6 @@ pub const ThreadSafeFunction = struct { owning_threads: std.AutoArrayHashMapUnmanaged(u64, void) = .{}, owning_thread_lock: Lock = Lock.init(), event_loop: *JSC.EventLoop, - concurrent_task: JSC.ConcurrentTask = .{}, - concurrent_finalizer_task: JSC.ConcurrentTask = .{}, env: napi_env, @@ -1323,7 +1321,7 @@ pub const ThreadSafeFunction = struct { } } - this.event_loop.enqueueTaskConcurrent(this.concurrent_task.from(this, .manual_deinit)); + this.event_loop.enqueueTaskConcurrent(JSC.ConcurrentTask.createFrom(this)); } pub fn finalize(opaq: *anyopaque) void { @@ -1372,7 +1370,7 @@ pub const ThreadSafeFunction = struct { if (this.owning_threads.count() == 0) { this.finalizer_task = JSC.AnyTask{ .ctx = this, .callback = finalize }; - this.event_loop.enqueueTaskConcurrent(this.concurrent_finalizer_task.from(&this.finalizer_task, .manual_deinit)); + this.event_loop.enqueueTaskConcurrent(JSC.ConcurrentTask.fromCallback(this, finalize)); return; } } |