X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdiagnostics.pm;h=3560f2d708ddd95c9e21129eda7f0ea223c0ac68;hb=d57fa8b6af39ea3eaa99a66e02134fdf61adb746;hp=073a456c81f83ad0ade6a9bba278d557c4f33e73;hpb=4633a7c4bad06b471d9310620b7fe8ddd158cccd;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/diagnostics.pm b/lib/diagnostics.pm index 073a456..3560f2d 100755 --- a/lib/diagnostics.pm +++ b/lib/diagnostics.pm @@ -1,9 +1,13 @@ #!/usr/local/bin/perl eval 'exec perl -S $0 ${1+"$@"}' - if $0; + if 0; use Config; -$diagnostics::PODFILE= $Config{privlib} . "/pod/perldiag.pod"; +if ($^O eq 'VMS') { + $diagnostics::PODFILE = VMS::Filespec::unixify($Config{'privlib'}) . + '/pod/perldiag.pod'; +} +else { $diagnostics::PODFILE= $Config{privlib} . "/pod/perldiag.pod"; } package diagnostics; require 5.001; @@ -406,16 +410,17 @@ sub warn_trap { if (caller eq $WHOAMI or !splainthis($warning)) { print STDERR $warning; } - &$oldwarn if $oldwarn and $oldwarn ne \&warn_trap; + &$oldwarn if defined $oldwarn and $oldwarn and $oldwarn ne \&warn_trap; }; sub death_trap { my $exception = $_[0]; splainthis($exception); if (caller eq $WHOAMI) { print STDERR "INTERNAL EXCEPTION: $exception"; } - &$olddie if defined $olddie and $olddie ne \&death_trap; + &$olddie if defined $olddie and $olddie and $olddie ne \&death_trap; $SIG{__DIE__} = $SIG{__WARN__} = ''; - confess "Uncaught exception from user code:\n\t$exception Bailing out"; + local($Carp::CarpLevel) = 1; + confess "Uncaught exception from user code:\n\t$exception"; # up we go; where we stop, nobody knows, but i think we die now # but i'm deeply afraid of the &$olddie guy reraising and us getting # into an indirect recursion loop