diff options
author | 2022-12-04 08:11:44 -0800 | |
---|---|---|
committer | 2022-12-04 08:11:44 -0800 | |
commit | bb5450fad0b45c42433c83c2af3a20876c3d4ead (patch) | |
tree | e45dbf001770a7c5d0c2396da72dd3dad8f52e85 /src | |
parent | 5bb8c42bdbdda11f816c180d69afb8e89bf407bd (diff) | |
download | bun-bb5450fad0b45c42433c83c2af3a20876c3d4ead.tar.gz bun-bb5450fad0b45c42433c83c2af3a20876c3d4ead.tar.zst bun-bb5450fad0b45c42433c83c2af3a20876c3d4ead.zip |
[breaking] `onExit` callback in Bun.spawn sets the first property to be the Subprocess object
Sometimes Bun.spawn calls the onExit callback before the Bun.spawn() callback is called.
Instead of delaying a tick, we set the `Subprocess` to be the first argument to the `onExit` callback now.
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/api/bun/subprocess.zig | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/bun.js/api/bun/subprocess.zig b/src/bun.js/api/bun/subprocess.zig index fe09746eb..53f0da03e 100644 --- a/src/bun.js/api/bun/subprocess.zig +++ b/src/bun.js/api/bun/subprocess.zig @@ -1571,14 +1571,20 @@ pub const Subprocess = struct { else JSC.JSValue.jsUndefined(); + const this_value = if (this_jsvalue.isEmptyOrUndefinedOrNull()) JSC.JSValue.jsUndefined() else this_jsvalue; + this_value.ensureStillAlive(); + const args = [_]JSValue{ - exit_value, + this_value, + this.getExitCode(globalThis), + this.getSignalCode(globalThis), waitpid_value, }; - const result = callback.call( + const result = callback.callWithThis( globalThis, - args[0 .. @as(usize, @boolToInt(this.exit_code != null)) + @as(usize, @boolToInt(this.waitpid_err != null))], + this_value, + &args, ); if (result.isAnyError(globalThis)) { |