aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/event_loop.zig4
-rw-r--r--src/bun.js/node/node_fs.zig12
-rw-r--r--src/napi/napi.zig6
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;
}
}