From 5b1ca277caefca44baf0aeaea2e32766e9bff097 Mon Sep 17 00:00:00 2001 From: Dmitry Goncharov Date: Fri, 21 Oct 2022 18:54:39 -0400 Subject: [PATCH] [SV 63248] Ignore SIGPIPE Don't terminate when make's output is redirected to a pipe and the reader exits early; e.g.: $ echo 'all:; sleep 2' | make -f- -j2 -O |: This lets us unlink temporary files, and tell the user that make was not able to write its output. Reported by Frank Heckenbach . * src/main.c (main): Ignore SIGPIPE. * src/posixos.c (osync_clear): Fix a memory leak. --- src/main.c | 5 +++++ src/posixos.c | 1 + 2 files changed, 6 insertions(+) diff --git a/src/main.c b/src/main.c index 509253fa..ba44fd67 100644 --- a/src/main.c +++ b/src/main.c @@ -1182,6 +1182,11 @@ main (int argc, char **argv, char **envp) /* Useful for attaching debuggers, etc. */ SPIN ("main-entry"); + /* Don't die if our stdout sends us SIGPIPE. */ +#ifdef SIGPIPE + bsd_signal (SIGPIPE, SIG_IGN); +#endif + #ifdef HAVE_ATEXIT if (ANY_SET (check_io_state (), IO_STDOUT_OK)) atexit (close_stdout); diff --git a/src/posixos.c b/src/posixos.c index a48116db..fca31927 100644 --- a/src/posixos.c +++ b/src/posixos.c @@ -699,6 +699,7 @@ osync_clear () int r; EINTRLOOP (r, unlink (osync_tmpfile)); + free (osync_tmpfile); osync_tmpfile = NULL; } } -- 2.47.3