aboutsummaryrefslogtreecommitdiffstats
path: root/src/callproc.c
diff options
context:
space:
mode:
authorPaul Eggert2013-06-23 11:18:47 -0700
committerPaul Eggert2013-06-23 11:18:47 -0700
commitc7041908b82205af2f812f9de782003d975f53da (patch)
tree6d0d071cc0cd36cf172a18b92e5b1f41c3299b80 /src/callproc.c
parent18bb9e21f3a95114d34947283e76a973692b526c (diff)
downloademacs-c7041908b82205af2f812f9de782003d975f53da.tar.gz
emacs-c7041908b82205af2f812f9de782003d975f53da.zip
Try to avoid malloc SEGVs on Cygwin.
* callproc.c, process.h (block_child_signal, unblock_child_signal): Now extern. * emacs.c (main): Catch SIGCHLD just before initializing gfilenotify. * process.c (catch_child_signal): Block SIGCHLD while futzing with the SIGCHLD handler, since the code is not atomic and (due to glib) signals may be arriving now. * sysdep.c (init_signals): Do not catch child signals here; 'main' now does that later, at a safer time. Fixes: debbugs:14569
Diffstat (limited to 'src/callproc.c')
-rw-r--r--src/callproc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/callproc.c b/src/callproc.c
index 745d58c45f4..f0aa8222342 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -84,7 +84,7 @@ static int synch_process_fd;
84 84
85/* Block SIGCHLD. */ 85/* Block SIGCHLD. */
86 86
87static void 87void
88block_child_signal (void) 88block_child_signal (void)
89{ 89{
90 sigset_t blocked; 90 sigset_t blocked;
@@ -95,7 +95,7 @@ block_child_signal (void)
95 95
96/* Unblock SIGCHLD. */ 96/* Unblock SIGCHLD. */
97 97
98static void 98void
99unblock_child_signal (void) 99unblock_child_signal (void)
100{ 100{
101 pthread_sigmask (SIG_SETMASK, &empty_mask, 0); 101 pthread_sigmask (SIG_SETMASK, &empty_mask, 0);