Log Message:
-----------
When print error output errorOutput($error, $details)
allow $details to be a reference to a string or a reference
to an array. This may not make much difference when the details
are short, but it can make a very large difference if the details
are long.
Modified Files:
--------------
webwork-modperl/lib/WeBWorK:
ContentGenerator.pm
Revision Data
-------------
Index: ContentGenerator.pm
===================================================================
RCS file: /webwork/cvs/system/webwork-modperl/lib/WeBWorK/ContentGenerator.pm,v
retrieving revision 1.138
retrieving revision 1.139
diff -Llib/WeBWorK/ContentGenerator.pm -Llib/WeBWorK/ContentGenerator.pm -u -r1.138 -r1.139
--- lib/WeBWorK/ContentGenerator.pm
+++ lib/WeBWorK/ContentGenerator.pm
@@ -1671,8 +1671,17 @@
my %headers = $r->headers_in;
join("", map { CGI::Tr(CGI::td(CGI::small($_)), CGI::td(CGI::small($headers{$_}))) } keys %headers);
};
-
- return
+ # dereference details,
+ # if it is a long report pass details by reference rather than by value
+ my @expandedDetails;
+ if (ref($details) =~ /SCALAR/i) {
+ push @expandedDetails, ${$details};
+ } elsif (ref($details) =~/ARRAY/i) {
+ push @expandedDetails, @{ $details };
+ } else {
+ push @expandedDetails, $details;
+ }
+ return join("",
CGI::h2("WeBWorK Error"),
CGI::p(<<EOF),
WeBWorK has encountered a software error while attempting to process this
@@ -1683,7 +1692,7 @@
CGI::h3("Error messages"),
CGI::p(CGI::code($error)),
CGI::h3("Error details"),
- CGI::p(CGI::code($details)),
+ CGI::code(CGI::p(@expandedDetails)),
CGI::h3("Request information"),
CGI::table({border=>"1"},
CGI::Tr(CGI::td("Time"), CGI::td($time)),
@@ -1692,7 +1701,8 @@
CGI::Tr(CGI::td("HTTP Headers"), CGI::td(
CGI::table($headers),
)),
- );
+ ),
+ );
}
=item warningOutput($warnings)
|