From: Eric Wong <e@yhbt.net>
Date: Sun, 2 Feb 2020 17:51:26 +0000 (+0000)
Subject: spawn: actually die on (vfork|fork) failures
X-Git-Tag: v1.3.0~22
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=e95b4225b32cd561e608e3b9740024ed66fe7b0f;p=public-inbox.git

spawn: actually die on (vfork|fork) failures

Commit 9f5a583694396f84 ("spawn (and thus popen_rd) die on failure")
was incomplete in that it only removed error checking for spawn
failures for non-(vfork|fork) calls, but the actual (vfork|fork)
PID result could still be undef.

Fixes: 9f5a583694396f84 ("spawn (and thus popen_rd) die on failure")
---

diff --git a/lib/PublicInbox/Spawn.pm b/lib/PublicInbox/Spawn.pm
index b02d5368..727caf1c 100644
--- a/lib/PublicInbox/Spawn.pm
+++ b/lib/PublicInbox/Spawn.pm
@@ -210,7 +210,8 @@ sub spawn ($;$$) {
 	}
 	my $cd = $opts->{'-C'} // ''; # undef => NULL mapping doesn't work?
 	my $pid = pi_fork_exec($redir, $f, $cmd, \@env, $rlim, $cd);
-	$pid < 0 ? undef : $pid;
+	die "fork_exec failed: $!\n" unless defined $pid;
+	$pid;
 }
 
 sub popen_rd {