chiark / gitweb /
prefork-interp: properly unlock lock in setup child
[chiark-utils.git] / cprogs / prefork-interp.c
index fb45ca009aff6c8944769422a140071f2b44435e..d87e8f82c87950ec6484a6a6816dd96a94c7ab3f 100644 (file)
@@ -697,8 +697,9 @@ void become_watcher(void) {
 }
 
 static __attribute__((noreturn))
-void become_setup(int sfd, int fake_pair[2],
+void become_setup(int sfd, int lockfd, int fake_pair[2],
                  int watcher_stdin, int watcher_stderr) {
+  close(lockfd);
   close(fake_pair[0]);
   int call_fd = fake_pair[1];
 
@@ -792,7 +793,7 @@ static void connect_or_spawn(void) {
 
   pid_t setup_pid = fork();
   if (setup_pid == (pid_t)-1) diee("fork for spawn setup");
-  if (!setup_pid) become_setup(sfd, fake_pair,
+  if (!setup_pid) become_setup(sfd, lockfd, fake_pair,
                               watcher_stdin[1], watcher_stderr[0]);
   close(fake_pair[1]);
   close(sfd);