diff options
Diffstat (limited to 'usr/src/lib/libc/port/gen/ssignal.c')
-rw-r--r-- | usr/src/lib/libc/port/gen/ssignal.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/usr/src/lib/libc/port/gen/ssignal.c b/usr/src/lib/libc/port/gen/ssignal.c index 6030626b17..ce74eb2a07 100644 --- a/usr/src/lib/libc/port/gen/ssignal.c +++ b/usr/src/lib/libc/port/gen/ssignal.c @@ -25,9 +25,7 @@ */ /* Copyright (c) 1988 AT&T */ -/* All Rights Reserved */ - -#pragma ident "%Z%%M% %I% %E% SMI" +/* All Rights Reserved */ /* * ssignal, gsignal: software signals @@ -54,8 +52,9 @@ ssignal(int sig, int (*action)(int)))(int) if (sig >= MINSIG && sig <= MAXSIGNUM) { savefn = sigs[sig-MINSIG]; sigs[sig-MINSIG] = action; - } else - savefn = (int(*)(int))SIG_DFL; + } else { + savefn = (int(*)(int))(uintptr_t)SIG_DFL; + } return (savefn); } @@ -66,12 +65,14 @@ gsignal(int sig) int (*sigfn)(int); if (sig < MINSIG || sig > MAXSIGNUM || - (sigfn = sigs[sig-MINSIG]) == (int(*)(int))SIG_DFL) + (sigfn = sigs[sig-MINSIG]) == (int(*)(int))(uintptr_t)SIG_DFL) { return (0); - else if (sigfn == (int(*)(int))SIG_IGN) - return (1); - else { - sigs[sig-MINSIG] = (int(*)(int))SIG_DFL; - return ((*sigfn)(sig)); + } else { + if (sigfn == (int(*)(int))(uintptr_t)SIG_IGN) { + return (1); + } else { + sigs[sig-MINSIG] = (int(*)(int))(uintptr_t)SIG_DFL; + return ((*sigfn)(sig)); + } } } |