Diff for /loncom/xml/Safe.pm between versions 1.6 and 1.7

version 1.6, 2003/08/30 02:26:37 version 1.7, 2003/08/30 03:25:34
Line 208  sub varglob { Line 208  sub varglob {
   
   
 sub reval {  sub reval {
     my ($obj, $expr, $strict) = @_;      $Safe::evalsub;
     my $root = $obj->{Root};      {
    my ($obj, $expr, $strict) = @_;
     # Create anon sub ref in root of compartment.   my $root = $obj->{Root};
     # Uses a closure (on $expr) to pass in the code to be executed.  
     # (eval on one line to keep line numbers as expected by caller)   # Create anon sub ref in root of compartment.
     my $evalcode = sprintf('package %s; sub { @_ = (); eval $expr; }', $root);   # Uses a closure (on $expr) to pass in the code to be executed.
     my $evalsub;   # (eval on one line to keep line numbers as expected by caller)
    my $evalcode = sprintf('package %s; sub { @_ = (\'\'); eval $expr; }', $obj->{Root});
     if ($strict) { use strict; $evalsub = eval $evalcode; }  
     else         {  no strict; $evalsub = eval $evalcode; }   if ($strict) { use strict; $Safe::evalsub = eval $evalcode; }
    else         {  no strict; $Safe::evalsub = eval $evalcode; }
     return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);      }
       return Opcode::_safe_call_sv($_[0]->{Root}, $_[0]->{Mask}, $Safe::evalsub);
 }  }
   
 sub rdo {  sub rdo {
Line 228  sub rdo { Line 229  sub rdo {
     my $root = $obj->{Root};      my $root = $obj->{Root};
   
     my $evalsub = eval      my $evalsub = eval
     sprintf('package %s; sub { @_ = (); do $file }', $root);      sprintf('package %s; sub { @_ = (\'\'); do $file }', $root);
     return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);      return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
 }  }
   

Removed from v.1.6  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>