summaryrefslogtreecommitdiffstats
path: root/source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch')
-rw-r--r--source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch b/source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch
new file mode 100644
index 000000000..9b6a35447
--- /dev/null
+++ b/source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch
@@ -0,0 +1,48 @@
+commit 0370a7a40fe9523ea334dcb8a2a60f1418595b49
+Author: Dmitry Goncharov <dgoncharov@users.sf.net>
+Date: Sun Nov 6 07:36:26 2022 -0500
+
+ [SV 63307] Spawn children with the default disposition of sigpipe.
+
+ * src/main.c (main): Set sigpipe disposition to a handler, rather than
+ SIG_IGN, in order for children to have the default sigpipe disposition.
+ * tests/scripts/misc/sigpipe: Add sigpipe tests.
+
+diff --git a/src/main.c b/src/main.c
+index eec93656..d8857696 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -1152,6 +1152,15 @@ temp_stdin_unlink ()
+ }
+ }
+
++#ifdef SIGPIPE
++static void
++handle_sigpipe (int sig)
++{
++ /* Suppress unused variable warning. */
++ sig = sig;
++}
++#endif
++
+ #ifdef _AMIGA
+ int
+ main (int argc, char **argv)
+@@ -1182,9 +1191,15 @@ main (int argc, char **argv, char **envp)
+ /* Useful for attaching debuggers, etc. */
+ SPIN ("main-entry");
+
+- /* Don't die if our stdout sends us SIGPIPE. */
++ /* Don't die if our stdout sends us SIGPIPE to get temporary files removed.
++ * If make has inherited SIG_IGN, keep running with SIG_IGN to let make's
++ * children inherit SIG_IGN.
++ * Othwerwise, set sigpipe disposition to a handler, in order for children to
++ * have the default sigpipe disposition. */
++
+ #ifdef SIGPIPE
+- bsd_signal (SIGPIPE, SIG_IGN);
++ if (bsd_signal (SIGPIPE, handle_sigpipe) == SIG_IGN)
++ bsd_signal (SIGPIPE, SIG_IGN);
+ #endif
+
+ #ifdef HAVE_ATEXIT