--- loncom/interface/spreadsheet/Spreadsheet.pm 2003/09/08 20:32:22 1.24 +++ loncom/interface/spreadsheet/Spreadsheet.pm 2003/09/12 18:59:48 1.25 @@ -1,5 +1,5 @@ # -# $Id: Spreadsheet.pm,v 1.24 2003/09/08 20:32:22 matthew Exp $ +# $Id: Spreadsheet.pm,v 1.25 2003/09/12 18:59:48 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -299,18 +299,23 @@ Returns the safe space required by a Spr =cut ###################################################### +{ + + my $safeeval; + sub initialize_safe_space { - my $self = shift; - my $safeeval = new Safe(shift); - my $safehole = new Safe::Hole; - $safeeval->permit("entereval"); - $safeeval->permit(":base_math"); - $safeeval->permit("sort"); - $safeeval->deny(":base_io"); - $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); - $safehole->wrap(\&mask,$safeeval,'&mask'); - $safeeval->share('$@'); - my $code=<<'ENDDEFS'; + my $self = shift; + if (! defined($safeeval)) { + $safeeval = new Safe(shift); + my $safehole = new Safe::Hole; + $safeeval->permit("entereval"); + $safeeval->permit(":base_math"); + $safeeval->permit("sort"); + $safeeval->deny(":base_io"); + $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); + $safehole->wrap(\&mask,$safeeval,'&mask'); + $safeeval->share('$@'); + my $code=<<'ENDDEFS'; # ---------------------------------------------------- Inside of the safe space # # f: formulas @@ -677,7 +682,8 @@ sub calc { # ------------------------------------------- End of "Inside of the safe space" ENDDEFS - $safeeval->reval($code); + $safeeval->reval($code); + } $self->{'safe'} = $safeeval; $self->{'root'} = $self->{'safe'}->root(); # @@ -691,6 +697,9 @@ ENDDEFS $self->{'safe'}->reval($initstring); return $self; } + +} + ###################################################### =pod