X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fsubprocs.c;h=463b3189450310fbbeb2f8e5ae552c17537de79e;hb=96bdd7cf6ea60c418a76921acaf0e34d6f5be930;hp=b6948e8789c30dd8c8c025f79eeafa1d7a568c27;hpb=4cecfc89e5e889c7232693897c06168fb378bd5c;p=xscreensaver diff --git a/driver/subprocs.c b/driver/subprocs.c index b6948e87..463b3189 100644 --- a/driver/subprocs.c +++ b/driver/subprocs.c @@ -88,6 +88,12 @@ extern saver_info *global_si_kludge; /* I hate C so much... */ static void limit_subproc_memory (int address_space_limit, Bool verbose_p) { + +/* This has caused way more problems than it has solved... + Let's just completely ignore the "memoryLimit" option now. + */ +#undef HAVE_SETRLIMIT + #if defined(HAVE_SETRLIMIT) && defined(RLIMIT_AS) struct rlimit r; @@ -288,17 +294,28 @@ static void describe_dead_child (saver_info *, pid_t, int wait_status); static int block_sigchld_handler = 0; -void +#ifdef HAVE_SIGACTION + sigset_t +#else /* !HAVE_SIGACTION */ + int +#endif /* !HAVE_SIGACTION */ block_sigchld (void) { #ifdef HAVE_SIGACTION sigset_t child_set; sigemptyset (&child_set); sigaddset (&child_set, SIGCHLD); + sigaddset (&child_set, SIGPIPE); sigprocmask (SIG_BLOCK, &child_set, 0); #endif /* HAVE_SIGACTION */ block_sigchld_handler++; + +#ifdef HAVE_SIGACTION + return child_set; +#else /* !HAVE_SIGACTION */ + return 0; +#endif /* !HAVE_SIGACTION */ } void @@ -308,6 +325,7 @@ unblock_sigchld (void) sigset_t child_set; sigemptyset(&child_set); sigaddset(&child_set, SIGCHLD); + sigaddset(&child_set, SIGPIPE); sigprocmask(SIG_UNBLOCK, &child_set, 0); #endif /* HAVE_SIGACTION */