about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Qspawn.pm7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/PublicInbox/Qspawn.pm b/lib/PublicInbox/Qspawn.pm
index 4b9bca5a..54976b00 100644
--- a/lib/PublicInbox/Qspawn.pm
+++ b/lib/PublicInbox/Qspawn.pm
@@ -56,6 +56,11 @@ sub _do_spawn {
         }
 
         ($self->{rpipe}, $self->{pid}) = popen_rd($cmd, $env, \%opts);
+
+        # drop any IO handles opt was holding open via $opt->{hold}
+        # No need to hold onto the descriptor once the child process has it.
+        $self->{args} = $cmd; # keep this around for logging
+
         if (defined $self->{pid}) {
                 $limiter->{running}++;
         } else {
@@ -104,7 +109,7 @@ sub waitpid_err ($$) {
         $self->{err} = $err;
         my $env = $self->{env} or return;
         if (!$env->{'qspawn.quiet'}) {
-                log_err($env, join(' ', @{$self->{args}->[0]}) . ": $err");
+                log_err($env, join(' ', @{$self->{args}}) . ": $err");
         }
 }