version 1.45, 2004/02/26 23:39:04
|
version 1.47, 2004/07/13 19:12:46
|
Line 46 while (!$_LONCAPA_INTERNAL_oldexpression
|
Line 46 while (!$_LONCAPA_INTERNAL_oldexpression
|
# only match the above if there is not { [ ( coming up |
# only match the above if there is not { [ ( coming up |
# Why? (I.e. this fails &a(1)[2] |
# Why? (I.e. this fails &a(1)[2] |
(?=[^\[\{\(]|$)/ |
(?=[^\[\{\(]|$)/ |
&__LC_INTERNAL_EVALUATE__($1,$2,$3)/sexg; |
my ($__LC__a,$__LC__b,$__LC__c)=($1,$2,$3); |
|
my $__LC__prefix; |
|
my $result; |
|
while (1) { |
|
{ |
|
use strict; |
|
no strict "vars"; |
|
if (eval(defined(eval($__LC__a.$__LC__b)))) { |
|
$result= $__LC__prefix.eval($__LC__a.$__LC__b.$__LC__c); |
|
last; |
|
} |
|
} |
|
$__LC__prefix.=substr($__LC__a,0,1,""); |
|
if ($__LC__a!~m-^(\$|&|\#)-) { last; } |
|
} |
|
if (!defined($result)) { |
|
$result=$__LC__prefix.$__LC__a.$__LC__b.$__LC__c; |
|
} |
|
$result; |
|
/sexg; |
if (scalar(values(%_LONCAPA_INTERNAL_oldexpressions))>10) {last;} |
if (scalar(values(%_LONCAPA_INTERNAL_oldexpressions))>10) {last;} |
} |
} |
ENDEVALUATE |
ENDEVALUATE |
Line 63 sub evaluate {
|
Line 82 sub evaluate {
|
die("timeout"); |
die("timeout"); |
}; |
}; |
my $innererror; |
my $innererror; |
|
$safeeval->permit("require"); |
eval { |
eval { |
alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); |
alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); |
$safeeval->reval('{'.$decls.';$_=<<\'EXPRESSION\';'."\n".$expression. |
$safeeval->reval('{'.$decls.';$_=<<\'EXPRESSION\';'."\n".$expression. |
Line 70 sub evaluate {
|
Line 90 sub evaluate {
|
$innererror=$@; |
$innererror=$@; |
alarm(0); |
alarm(0); |
}; |
}; |
|
$safeeval->deny("require"); |
my $error=$@; |
my $error=$@; |
if ($error eq '' && $innererror eq '' && !$Apache::run::timeout) { |
if ($error eq '' && $innererror eq '' && !$Apache::run::timeout) { |
$result = $safeeval->reval('return $_;'); |
$result = $safeeval->reval('return $_;'); |
Line 80 sub evaluate {
|
Line 101 sub evaluate {
|
$Apache::lonnet::perlvar{'lonScriptTimeout'}.' seconds'; |
$Apache::lonnet::perlvar{'lonScriptTimeout'}.' seconds'; |
} |
} |
&Apache::lonxml::error('substitution on <pre>'. |
&Apache::lonxml::error('substitution on <pre>'. |
&HTML::Entities::encode($expression). |
&HTML::Entities::encode($expression,'<>&"'). |
'</pre> with <pre>'. |
'</pre> with <pre>'. |
&HTML::Entities::encode($decls). |
&HTML::Entities::encode($decls,'<>&"'). |
'</pre> caused <pre>'. |
'</pre> caused <pre>'. |
&HTML::Entities::encode($error).' '. |
&HTML::Entities::encode($error,'<>&"').' '. |
&HTML::Entities::encode($innererror). |
&HTML::Entities::encode($innererror,'<>&"'). |
'</pre>'); |
'</pre>'); |
} |
} |
return $result |
return $result |
Line 113 sub run {
|
Line 134 sub run {
|
$error = 'Code ran too long. It ran for more than '. |
$error = 'Code ran too long. It ran for more than '. |
$Apache::lonnet::perlvar{'lonScriptTimeout'}.' seconds'; |
$Apache::lonnet::perlvar{'lonScriptTimeout'}.' seconds'; |
} |
} |
my $errormsg='<pre>'.&HTML::Entities::encode($error).' '. |
my $errormsg='<pre>'.&HTML::Entities::encode($error,'<>&"').' '. |
&HTML::Entities::encode($innererror). |
&HTML::Entities::encode($innererror,'<>&"'). |
'</pre> occured while running <pre>'; |
'</pre> occured while running <pre>'; |
$code=&HTML::Entities::encode($code); |
$code=&HTML::Entities::encode($code,'<>&"'); |
if ($innererror=~/line (\d+)/) { |
if ($innererror=~/line (\d+)/) { |
my $linenumber=$1; |
my $linenumber=$1; |
my @code=split("\n",$code); |
my @code=split("\n",$code); |
Line 153 sub dump {
|
Line 174 sub dump {
|
$symname.'{$_} } sort keys %'. |
$symname.'{$_} } sort keys %'. |
$symname.')').")" |
$symname.')').")" |
} |
} |
if ($line ne '') {$dump.=&HTML::Entities::encode($line)."<br />";} |
if ($line ne '') {$dump.=&HTML::Entities::encode($line,'<>&"')."<br />";} |
} |
} |
} |
} |
$dump.=''; |
$dump.=''; |