X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSpawnPP.pm;h=179aba5e737ccb524947dfd424d208c2618abed8;hb=2c69f7bc34a2b12dc7f55e2bb24fa28565f24f03;hp=36223e8132eefa30c380bf1b07fef42bbf40628b;hpb=e748f75979046724ead380bd00eadc677bdc07e9;p=public-inbox.git diff --git a/lib/PublicInbox/SpawnPP.pm b/lib/PublicInbox/SpawnPP.pm index 36223e81..179aba5e 100644 --- a/lib/PublicInbox/SpawnPP.pm +++ b/lib/PublicInbox/SpawnPP.pm @@ -12,7 +12,12 @@ sub public_inbox_fork_exec ($$$$$$) { my $set = POSIX::SigSet->new(); $set->fillset or die "fillset failed: $!"; sigprocmask(SIG_SETMASK, $set, $old) or die "can't block signals: $!"; + my $syserr; my $pid = fork; + unless (defined $pid) { # compat with Inline::C version + $syserr = $!; + $pid = -1; + } if ($pid == 0) { if ($in != 0) { dup2($in, 0) or die "dup2 failed for stdin: $!"; @@ -34,6 +39,7 @@ sub public_inbox_fork_exec ($$$$$$) { } } sigprocmask(SIG_SETMASK, $old) or die "can't unblock signals: $!"; + $! = $syserr; $pid; }