# 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}) {
# 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();