--- deliantra/server/lib/cf.pm 2006/08/25 15:25:12 1.41 +++ deliantra/server/lib/cf.pm 2006/08/25 15:31:44 1.42 @@ -626,7 +626,7 @@ ############################################################################# # map scripting support -our $safe = new Safe "ext"; +our $safe = new Safe "safe"; our $safe_hole = new Safe::Hole; $SIG{FPE} = 'IGNORE'; @@ -656,7 +656,7 @@ local $_; local @safe::cf::_safe_eval_args = values %vars; - $code = + my $eval = "do {\n" . "my (" . (join ",", map "\$$_", keys %vars) . ") = \@cf::_safe_eval_args;\n" . "#line 0 \"{$qcode}\"\n" @@ -665,9 +665,15 @@ ; sub_generation_inc; - my @res = wantarray ? $safe->reval ($code) : scalar $safe->reval ($code); + my @res = wantarray ? $safe->reval ($eval) : scalar $safe->reval ($eval); sub_generation_inc; + if ($@) { + warn "$@"; + warn "while executing safe code '$code'\n"; + warn "with arguments " . (join " ", %vars) . "\n"; + } + wantarray ? @res : $res[0] }