Add $^E and $^O
[p5sagit/p5-mst-13.2.git] / lib / splain
index 073a456..f40c51e 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 eval 'exec perl -S $0  ${1+"$@"}'
-    if $0;
+    if 0;
 
 use Config;
 $diagnostics::PODFILE= $Config{privlib} . "/pod/perldiag.pod";
@@ -406,16 +406,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