summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDmitry Goncharov <dgoncharov@users.sf.net>2022-08-22 21:27:08 -0400
committerPaul Smith <psmith@gnu.org>2022-08-22 21:27:08 -0400
commit10e130b20793f650835085d5ebe85e4ad0c83654 (patch)
treeffe4101c7e6b46a44e9c50e85b48c364bd7276dd /tests
parent62da1c45e51f90892dd785fbdd42aeff769defb6 (diff)
downloadmake-git-10e130b20793f650835085d5ebe85e4ad0c83654.tar.gz
[SV 62908] Don't free fifo_name twice during error handling
* src/posixos.c (jobserver_setup): Set fifo_name to NULL after free. * tests/scripts/features/jobserver: Add tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/scripts/features/jobserver15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver
index 7044c51a..17374eaf 100644
--- a/tests/scripts/features/jobserver
+++ b/tests/scripts/features/jobserver
@@ -131,4 +131,19 @@ all a: ; @echo $@
'--jobserver-style=foo -j8',
"#MAKE#: *** Unknown jobserver auth style 'foo'. Stop.", 512);
+# sv 62908.
+# Test that when mkfifo fails, make switches to pipe and succeeds.
+# Force mkfifo to fail by attempting to create a fifo in a non existent
+# directory.
+# run_make_test does not allow matching a multiline pattern, therefore run the
+# test twice.
+# First time look for /$ERR_no_such_file/ to ensure mkfifo failed.
+# Second time look for /Nothing to be done/ to ensure make succeeded.
+$ENV{TMPDIR} = "nosuchdir";
+run_make_test("all:\n", '-j2', "/$ERR_no_such_file/");
+
+$ENV{TMPDIR} = "nosuchdir";
+run_make_test(undef, '-j2', "/Nothing to be done/");
+
+
1;