File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -538,7 +538,12 @@ const SignalFn = switch (builtin.zig_backend) {
538538 .stage1 = > fn (c_int ) callconv (.C ) void ,
539539 else = > * const fn (c_int ) callconv (.C ) void ,
540540};
541- export fn signal (sig : c_int , func : SignalFn ) callconv (.C ) ? SignalFn {
541+ const SignalResult = packed union {
542+ handler : ? SignalFn ,
543+ err : isize ,
544+ };
545+ export fn signal (sig : c_int , func : SignalFn ) callconv (.C ) SignalResult {
546+ std .debug .assert (@sizeOf (SignalResult ) == @sizeOf (? SignalFn ));
542547 if (builtin .os .tag == .linux ) {
543548 var action = std.os.Sigaction {
544549 .handler = .{ .handler = func },
@@ -552,12 +557,10 @@ export fn signal(sig: c_int, func: SignalFn) callconv(.C) ?SignalFn {
552557 & action ,
553558 & old_action ,
554559 ))) {
555- .SUCCESS = > return old_action .handler .handler ,
560+ .SUCCESS = > return SignalResult { . handler = old_action .handler .handler } ,
556561 else = > | e | {
557562 errno = @enumToInt (e );
558- // translate-c having a hard time with this one
559- //return c.SIG_ERR;
560- return @intToPtr (? SignalFn , @bitCast (usize , @as (isize , -1 )));
563+ return SignalResult { .err = -1 };
561564 },
562565 }
563566 }
You can’t perform that action at this time.
0 commit comments