Skip to content

Commit f52ae10

Browse files
sorearPerl 6 Evalbot
authored andcommitted
Only fork once, use signal names
1 parent f4d019b commit f52ae10

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/EvalbotExecuter.pm

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ the temp file.
6767
use strict;
6868
use warnings;
6969
use utf8;
70+
use Config;
7071
use BSD::Resource;
7172
use Carp qw(confess);
7273
use File::Temp qw(tempfile);
@@ -118,8 +119,6 @@ sub _fork_and_eval {
118119
POSIX::setpgid($$,$$);
119120
_set_resource_limits();
120121
_auto_execute($executer, $program, $fh, $filename, $ename);
121-
close $fh;
122-
exit;
123122
} else {
124123
# server
125124
alarm 12;
@@ -141,7 +140,7 @@ sub _fork_and_eval {
141140
if ($timed_out) {
142141
$result = "(timeout)" . $result;
143142
} elsif ($? & 127) {
144-
$result = "(signal $?)" . $result;
143+
$result = "(signal " . (split ' ', $Config{sig_name})[$?] . ")" . $result;
145144
}
146145
if (reftype($executer) eq 'HASH' && $executer->{filter}){
147146
return $executer->{filter}->($result);
@@ -188,7 +187,9 @@ sub _auto_execute {
188187
close $prog_fh;
189188

190189
$cmd =~ s/\%program\b/$program_file_name/g;
191-
system($cmd);
190+
close $fh;
191+
exec($cmd);
192+
die "exec ($cmd) failed: $!\n";
192193
}
193194

194195
sub _set_resource_limits {

0 commit comments

Comments
 (0)