Carp was mostly unusable with Safe because it may require
[p5sagit/p5-mst-13.2.git] / lib / Carp.pm
index 6230bb7..b09efd4 100644 (file)
@@ -155,7 +155,12 @@ sub export_fail {
 # each function call on the stack.
 
 sub longmess {
-    { local $@; require Carp::Heavy; } # XXX fix require to not clear $@?
+    {
+       local $@;
+       # XXX fix require to not clear $@?
+       # don't use require unless we need to (for Safe compartments)
+       require Carp::Heavy unless $INC{"Carp/Heavy.pm"};
+    }
     # Icky backwards compatibility wrapper. :-(
     my $call_pack = caller();
     if ($Internal{$call_pack} or $CarpInternal{$call_pack}) {
@@ -175,7 +180,12 @@ sub longmess {
 # you always get a stack trace
 
 sub shortmess {        # Short-circuit &longmess if called via multiple packages
-    { local $@; require Carp::Heavy; } # XXX fix require to not clear $@?
+    {
+       local $@;
+       # XXX fix require to not clear $@?
+       # don't use require unless we need to (for Safe compartments)
+       require Carp::Heavy unless $INC{"Carp/Heavy.pm"};
+    }
     # Icky backwards compatibility wrapper. :-(
     my $call_pack = caller();
     local @CARP_NOT = caller();