summaryrefslogtreecommitdiff
path: root/src/sysdep.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2002-07-11 17:29:56 +0000
committerRichard M. Stallman <rms@gnu.org>2002-07-11 17:29:56 +0000
commitee6ef24cbbcac3c0bc71bfb68da9c19b2f877343 (patch)
tree351490d4847fe4dda790c782f05872f4bac0c6e7 /src/sysdep.c
parente2452d92ef902636e1e4e583d48bd08d13d8ff9f (diff)
downloademacs-ee6ef24cbbcac3c0bc71bfb68da9c19b2f877343.tar.gz
(sys_signal): Test BROKEN_SA_RESTART.
Diffstat (limited to 'src/sysdep.c')
-rw-r--r--src/sysdep.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 383be4b9df6..f2ac20ae4a5 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2816,10 +2816,12 @@ sys_signal (int signal_number, signal_handler_t action)
struct sigaction new_action, old_action;
sigemptyset (&new_action.sa_mask);
new_action.sa_handler = action;
-#ifdef SA_RESTART
+#if defined (SA_RESTART) && ! defined (BROKEN_SA_RESTART)
/* Emacs mostly works better with restartable system services. If this
- * flag exists, we probably want to turn it on here.
- */
+ flag exists, we probably want to turn it on here.
+ However, on some systems this resets the timeout of `select'
+ which means that `select' never finishes if it keeps getting signals.
+ BROKEN_SA_RESTART is defined on those systems. */
new_action.sa_flags = SA_RESTART;
#else
new_action.sa_flags = 0;