summaryrefslogtreecommitdiff
path: root/lib/CGI
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2003-07-04 12:39:20 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2003-07-04 12:39:20 +0000
commit1c87da1da4f953d5e3fa74ec3075ddaf999e9d1e (patch)
tree16e312c50c98625306720edcebe5402a9542be15 /lib/CGI
parent1e6e959c1f897fc5428036f095b909e4bdac5c4e (diff)
downloadperl-1c87da1da4f953d5e3fa74ec3075ddaf999e9d1e.tar.gz
Upgrade to CGI.pm 2.97.
p4raw-id: //depot/perl@19984
Diffstat (limited to 'lib/CGI')
-rw-r--r--lib/CGI/Carp.pm33
1 files changed, 20 insertions, 13 deletions
diff --git a/lib/CGI/Carp.pm b/lib/CGI/Carp.pm
index 3ae9c5be7d..8420eb2d67 100644
--- a/lib/CGI/Carp.pm
+++ b/lib/CGI/Carp.pm
@@ -239,6 +239,10 @@ non-overridden program name
1.24 Patch from Scott Gifford (sgifford@suspectclass.com): Add support
for overriding program name.
+1.26 Replaced CORE::GLOBAL::die with the evil $SIG{__DIE__} because the
+ former isn't working in some people's hands. There is no such thing
+ as reliable exception handling in Perl.
+
=head1 AUTHORS
Copyright 1995-2002, Lincoln D. Stein. All rights reserved.
@@ -262,18 +266,23 @@ CGI::Response
require 5.000;
use Exporter;
#use Carp;
-BEGIN { require Carp; }
+BEGIN {
+ require Carp;
+ *CORE::GLOBAL::die = \&CGI::Carp::die;
+}
+
use File::Spec;
@ISA = qw(Exporter);
@EXPORT = qw(confess croak carp);
-@EXPORT_OK = qw(carpout fatalsToBrowser warningsToBrowser wrap set_message set_progname cluck ^name=);
+@EXPORT_OK = qw(carpout fatalsToBrowser warningsToBrowser wrap set_message set_progname cluck ^name= die);
$main::SIG{__WARN__}=\&CGI::Carp::warn;
-*CORE::GLOBAL::die = \&CGI::Carp::die;
-$CGI::Carp::VERSION = '1.25';
+
+$CGI::Carp::VERSION = '1.26';
$CGI::Carp::CUSTOM_MSG = undef;
+
# fancy import routine detects and handles 'errorWrap' specially.
sub import {
my $pkg = shift;
@@ -294,6 +303,8 @@ sub import {
$Exporter::ExportLevel = 1;
Exporter::import($pkg,keys %routines);
$Exporter::ExportLevel = $oldlevel;
+ $main::SIG{__DIE__} =\&CGI::Carp::die if $routines{'fatalsToBrowser'};
+# $pkg->export('CORE::GLOBAL','die');
}
# These are the originals
@@ -442,7 +453,7 @@ END
$outer_message = $CUSTOM_MSG;
}
}
-
+
my $mess = <<END;
<h1>Software error:</h1>
<pre>$msg</pre>
@@ -451,7 +462,7 @@ $outer_message
</p>
END
;
-
+
if ($mod_perl) {
require mod_perl;
if ($mod_perl::VERSION >= 1.99) {
@@ -472,15 +483,11 @@ END
$r->print($mess);
$mod_perl == 2 ? ModPerl::Util::exit(0) : $r->exit;
} else {
- # MSIE browsers don't show the $mess when sent
- # a custom 500 response.
+ # MSIE won't display a custom 500 response unless it is >512 bytes!
if ($ENV{HTTP_USER_AGENT} =~ /MSIE/) {
- $r->send_http_header('text/html');
- $r->print($mess);
- $mod_perl == 2 ? ModPerl::Util::exit(0) : $r->exit;
- } else {
- $r->custom_response(500,$mess);
+ $mess = "<!-- " . (' ' x 513) . " -->\n$mess";
}
+ $r->custom_response(500,$mess);
}
} else {
print STDOUT $mess;