version 1.391, 2005/12/06 10:21:18
|
version 1.393, 2005/12/08 19:37:05
|
Line 52 use Math::Random();
|
Line 52 use Math::Random();
|
use Opcode(); |
use Opcode(); |
use POSIX qw(strftime); |
use POSIX qw(strftime); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use Time::HiRes qw( gettimeofday tv_interval ); |
|
use Symbol(); |
|
|
sub register { |
sub register { |
my ($space,@taglist) = @_; |
my ($space,@taglist) = @_; |
Line 370 sub xmlparse {
|
Line 371 sub xmlparse {
|
} |
} |
&do_registered_ssi(); |
&do_registered_ssi(); |
if ($Apache::lonxml::counter_changed) { &store_counter() } |
if ($Apache::lonxml::counter_changed) { &store_counter() } |
|
|
|
&clean_safespace($safeeval); |
|
|
if ($env{'form.return_only_error_and_warning_counts'}) { |
if ($env{'form.return_only_error_and_warning_counts'}) { |
return "$errorcount:$warningcount"; |
return "$errorcount:$warningcount"; |
} |
} |
Line 795 sub init_safespace {
|
Line 799 sub init_safespace {
|
&initialize_rndseed($safeeval); |
&initialize_rndseed($safeeval); |
} |
} |
|
|
|
sub clean_safespace { |
|
my ($safeeval) = @_; |
|
delete_package_recurse($safeeval->{Root}); |
|
} |
|
|
|
sub delete_package_recurse { |
|
my ($package) = @_; |
|
my @subp; |
|
{ |
|
no strict 'refs'; |
|
while (my ($key,$val) = each(%{*{"$package\::"}})) { |
|
if (!defined($val)) { next; } |
|
local (*ENTRY) = $val; |
|
if (defined *ENTRY{HASH} && $key =~ /::$/ && |
|
$key ne "main::" && $key ne "<none>::") |
|
{ |
|
my ($p) = $package ne "main" ? "$package\::" : ""; |
|
($p .= $key) =~ s/::$//; |
|
push(@subp,$p); |
|
} |
|
} |
|
} |
|
foreach my $p (@subp) { |
|
delete_package_recurse($p); |
|
} |
|
Symbol::delete_package($package); |
|
} |
|
|
sub initialize_rndseed { |
sub initialize_rndseed { |
my ($safeeval)=@_; |
my ($safeeval)=@_; |
my $rndseed; |
my $rndseed; |