diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2007-05-01 09:35:04 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2007-05-01 09:35:04 +0000 |
commit | 6e5279f8b4ba43133cf1db1f76b8e536da98797d (patch) | |
tree | e4cbc45db2250c6cac01a76ab30f5ccf87ee59ac /Src/signals.h | |
parent | 19dccc355a3a6316a60abdb739bbec7f9ce9a362 (diff) | |
download | zsh-6e5279f8b4ba43133cf1db1f76b8e536da98797d.tar.gz zsh-6e5279f8b4ba43133cf1db1f76b8e536da98797d.tar.xz zsh-6e5279f8b4ba43133cf1db1f76b8e536da98797d.zip |
Guillaume Chazarain: 23364: fix race in POSIX signal blocking
by using local variables
Diffstat (limited to 'Src/signals.h')
-rw-r--r-- | Src/signals.h | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/Src/signals.h b/Src/signals.h index 999040908..9541a1a02 100644 --- a/Src/signals.h +++ b/Src/signals.h @@ -100,26 +100,10 @@ #define restore_queue_signals(q) (queueing_enabled = (q)) -/* Make some signal functions faster. */ - -#ifdef POSIX_SIGNALS -#define signal_block(S) \ - ((dummy_sigset1 = (S)), \ - sigprocmask(SIG_BLOCK, &dummy_sigset1, &dummy_sigset2), \ - dummy_sigset2) -#else -# ifdef BSD_SIGNALS +#ifdef BSD_SIGNALS #define signal_block(S) sigblock(S) -# else -extern sigset_t signal_block _((sigset_t)); -# endif /* BSD_SIGNALS */ -#endif /* POSIX_SIGNALS */ - -#ifdef POSIX_SIGNALS -#define signal_unblock(S) \ - ((dummy_sigset1 = (S)), \ - sigprocmask(SIG_UNBLOCK, &dummy_sigset1, &dummy_sigset2), \ - dummy_sigset2) #else +extern sigset_t signal_block _((sigset_t)); +#endif /* BSD_SIGNALS */ + extern sigset_t signal_unblock _((sigset_t)); -#endif /* POSIX_SIGNALS */ |