diff options
| author | tgoodwin <tgoodwin> | 1998-07-09 16:33:42 +0000 |
|---|---|---|
| committer | Toby Goodwin <toby@paccrat.org> | 2015-05-16 21:23:07 +0100 |
| commit | f41b897207c2d23503cb813cd8117af9a5391912 (patch) | |
| tree | 39588ade2f7acb046f84bde2a9c40ac59bb6758a /signal.c | |
| parent | 48c0b2add862b07e0c535e09bc1d0ae3c7661896 (diff) | |
don't ever try to set a signal to SIG_ERR
Diffstat (limited to 'signal.c')
| -rw-r--r-- | signal.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -99,8 +99,10 @@ extern void (*rc_signal(int s, void (*h)(int)))(int) { extern void initsignal() { void (*h)(int); int i; + for (i = 1; i < NUMOFSIGNALS; i++) { - if ((h = signal(i, SIG_DFL)) != SIG_DFL) + h = signal(i, SIG_DFL); + if (h != SIG_DFL && h != SIG_ERR) signal(i, h); sighandlers[i] = h; } @@ -108,7 +110,7 @@ extern void initsignal() { #if HAVE_SYSV_SIGCLD /* Ensure that SIGCLD is not SIG_IGN. Solaris's rshd does this. :-( */ h = signal(SIGCLD, SIG_DFL); - if (h != SIG_IGN) + if (h != SIG_IGN && h != SIG_ERR) signal(SIGCLD, h); #endif } |