--- loncom/xml/run.pm 2006/01/11 08:52:58 1.55 +++ loncom/xml/run.pm 2008/09/11 14:47:24 1.59 @@ -1,6 +1,6 @@ package Apache::run; # -# $Id: run.pm,v 1.55 2006/01/11 08:52:58 albertel Exp $ +# $Id: run.pm,v 1.59 2008/09/11 14:47:24 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,7 +50,7 @@ while (!$_LONCAPA_INTERNAL_oldexpression my $__LC__prefix; my $__LC__result; while (1) { - if ($__LC__a =~ m-^&(theta|i|pi|rho)-) { last; } + if ($__LC__a =~ m-^&(theta|pi|rho)$-) { last; } { use strict; no strict "vars"; @@ -78,7 +78,7 @@ sub evaluate { my $result = ''; $@=''; $Apache::run::timeout=0; - $main::SIG{'ALRM'} = sub { + local $main::SIG{'ALRM'} = sub { $Apache::run::timeout=1; die("timeout"); }; @@ -116,7 +116,7 @@ sub run { my @result; $@=''; $Apache::run::timeout=0; - $main::SIG{'ALRM'} = sub { + local $main::SIG{'ALRM'} = sub { $Apache::run::timeout=1; die("timeout"); }; @@ -135,13 +135,15 @@ sub run { } my $errormsg='
'.&HTML::Entities::encode($error,'<>&"').' '.
 	    &HTML::Entities::encode($innererror,'<>&"').
-	    '
occured while running
';
+	    '
occurred while running
';
 	$code=&HTML::Entities::encode($code,'<>&"');
 	if ($innererror=~/line (\d+)/) {
 	    my $linenumber=$1;
 	    my @code=split("\n",$code);
-	    $code[$linenumber-1]=''.
-		$code[$linenumber-1].'';
+	    if ($linenumber < scalar(@code)) {
+		$code[$linenumber-1]=''.
+		    $code[$linenumber-1].'';
+	    }
 	    $code=join("\n",@code);
 	}
 	&Apache::lonxml::error($errormsg.$code.'
');