summaryrefslogtreecommitdiff
path: root/src/shell_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-12-06 20:33:13 +1100
committerMaxime Coste <mawww@kakoune.org>2018-12-06 20:33:13 +1100
commitb897a18aa6afb0a5f95fd89cfd30664928c8b549 (patch)
tree17483d350098836013414d9c4fe3b3e8187e2424 /src/shell_manager.cc
parent5f315e68b6b5b9484da244df0ca14aa2fb9c109f (diff)
Use a dummy function for SIGPIPE instead of SIG_IGN
SIG_IGN is inherited after 'execve' and requires us to reset that signal handler, which does not work well with vfork on OSX. Using an empty function does the trick and will be auto reset to default on exec.
Diffstat (limited to 'src/shell_manager.cc')
-rw-r--r--src/shell_manager.cc1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/shell_manager.cc b/src/shell_manager.cc
index e774eb33..065a9f74 100644
--- a/src/shell_manager.cc
+++ b/src/shell_manager.cc
@@ -177,7 +177,6 @@ std::pair<String, int> ShellManager::eval(
Pipe child_stdin{not input.empty()}, child_stdout, child_stderr;
pid_t pid = spawn_shell(m_shell.c_str(), cmdline, shell_context.params, kak_env,
[&child_stdin, &child_stdout, &child_stderr] {
- set_signal_handler(SIGPIPE, SIG_DFL);
auto move = [](int oldfd, int newfd)
{
if (oldfd == newfd)