aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/api/bun/subprocess.zig24
-rw-r--r--src/bun.js/bindings/bindings.zig11
-rw-r--r--src/c.zig23
3 files changed, 21 insertions, 37 deletions
diff --git a/src/bun.js/api/bun/subprocess.zig b/src/bun.js/api/bun/subprocess.zig
index 4e2a0cc94..9baee4e92 100644
--- a/src/bun.js/api/bun/subprocess.zig
+++ b/src/bun.js/api/bun/subprocess.zig
@@ -1240,14 +1240,26 @@ pub const Subprocess = struct {
this.has_waitpid_task = false;
- const callback = this.on_exit_callback.swap();
- if (callback != .zero) {
+ if (this.on_exit_callback.trySwap()) |callback| {
+ const exit_value: JSValue = if (this.exit_code) |code|
+ JSC.JSValue.jsNumber(code)
+ else
+ JSC.JSValue.jsNumber(@as(i32, -1));
+
+ const waitpid_value: JSValue =
+ if (this.waitpid_err) |err|
+ err.toJSC(this.globalThis)
+ else
+ JSC.JSValue.jsUndefined();
+
+ const args = [_]JSValue{
+ exit_value,
+ waitpid_value,
+ };
+
const result = callback.call(
this.globalThis,
- &[_]JSValue{
- if (this.exit_code != null) JSC.JSValue.jsNumber(this.exit_code.?) else JSC.JSValue.jsNumber(@as(i32, -1)),
- if (this.waitpid_err != null) this.waitpid_err.?.toJSC(this.globalThis) else JSC.JSValue.jsUndefined(),
- },
+ args[0 .. @as(usize, @boolToInt(this.exit_code != null)) + @as(usize, @boolToInt(this.waitpid_err != null))],
);
if (result.isAnyError(this.globalThis)) {
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig
index 813a222ef..c374ff0ec 100644
--- a/src/bun.js/bindings/bindings.zig
+++ b/src/bun.js/bindings/bindings.zig
@@ -2961,14 +2961,9 @@ pub const JSValue = enum(JSValueReprInt) {
return switch (comptime Number) {
JSValue => number,
f32, f64 => jsNumberFromDouble(@as(f64, number)),
- u8 => jsNumberFromChar(number),
- i16, i32, c_int, i8, u16 => jsNumberFromInt32(@intCast(i32, number)),
- i64 => jsNumberFromInt64(@intCast(i64, number)),
- c_uint => jsNumberFromUint64(@intCast(u64, number)),
- u64 => jsNumberFromUint64(@intCast(u64, number)),
- u32 => if (number <= std.math.maxInt(i32)) jsNumberFromInt32(@intCast(i32, number)) else jsNumberFromUint64(@as(u64, number)),
- u52 => jsNumberFromUint64(@as(u64, number)),
- usize => jsNumberFromUint64(@as(u64, number)),
+ u8, i16, i32, c_int, i8, u16 => jsNumberFromInt32(@intCast(i32, number)),
+ u32, u52, c_uint, i64 => jsNumberFromInt64(@intCast(i64, number)),
+ usize, u64 => jsNumberFromUint64(@intCast(u64, number)),
comptime_int => switch (number) {
0...std.math.maxInt(i32) => jsNumberFromInt32(@intCast(i32, number)),
else => jsNumberFromInt64(@intCast(i64, number)),
diff --git a/src/c.zig b/src/c.zig
index 6d53607de..56b27fdf7 100644
--- a/src/c.zig
+++ b/src/c.zig
@@ -396,26 +396,3 @@ pub fn getRelease(buf: []u8) []const u8 {
return "unknown";
}
}
-
-// we only want these two symbols from this
-const WaitH = struct {
- pub usingnamespace @cImport("sys/wait.h");
-};
-
-/// Return exit status.
-pub const WEXITSTATUS = WaitH.WEXITSTATUS;
-
-/// True if child exited normally.
-pub const WIFEXITED = WaitH.WIFEXITED;
-
-/// True if child exited due to uncaught signal.
-pub const WIFSIGNALED = WaitH.WIFSIGNALED;
-
-/// True if child is currently stopped.
-pub const WIFSTOPPED = WaitH.WIFSTOPPED;
-
-/// Return signal number that caused process to stop.
-pub const WSTOPSIG = WaitH.WSTOPSIG;
-
-/// Return signal number that caused process to terminate.
-pub const WTERMSIG = WaitH.WTERMSIG;