diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2003-07-04 12:39:20 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2003-07-04 12:39:20 +0000 |
commit | 1c87da1da4f953d5e3fa74ec3075ddaf999e9d1e (patch) | |
tree | 16e312c50c98625306720edcebe5402a9542be15 /lib/CGI | |
parent | 1e6e959c1f897fc5428036f095b909e4bdac5c4e (diff) | |
download | perl-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.pm | 33 |
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; |