aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/api
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-04 08:11:44 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-04 08:11:44 -0800
commitbb5450fad0b45c42433c83c2af3a20876c3d4ead (patch)
treee45dbf001770a7c5d0c2396da72dd3dad8f52e85 /src/bun.js/api
parent5bb8c42bdbdda11f816c180d69afb8e89bf407bd (diff)
downloadbun-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/bun.js/api')
-rw-r--r--src/bun.js/api/bun/subprocess.zig12
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)) {