summaryrefslogtreecommitdiff
path: root/lib/Carp
diff options
context:
space:
mode:
authorBen Tilly <ben_tilly@operamail.com>2006-10-22 07:07:23 -0700
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2006-11-14 10:18:00 +0000
commitd735c2efe0b08b05adfb893625476bf4480a2ece (patch)
tree2af965ced2fc2c8a3d26b65147385f78c4f22cd0 /lib/Carp
parentbfb0b58a0ee1c7605d58a3bdb19350b27f738866 (diff)
downloadperl-d735c2efe0b08b05adfb893625476bf4480a2ece.tar.gz
Re: Why aren't %Carp::Internal and %Carp::CarpInternal documented?
From: "Ben Tilly" <btilly@gmail.com> Message-ID: <acc274b30610221407o39e0157gad44ad5828c2bc21@mail.gmail.com> p4raw-id: //depot/perl@29270
Diffstat (limited to 'lib/Carp')
-rw-r--r--lib/Carp/Heavy.pm16
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/Carp/Heavy.pm b/lib/Carp/Heavy.pm
index f86b7b4371..4355584d20 100644
--- a/lib/Carp/Heavy.pm
+++ b/lib/Carp/Heavy.pm
@@ -15,10 +15,6 @@ use Carp; our $VERSION = $Carp::VERSION;
# these are called, they require Carp::Heavy which installs the real
# routines.
-# Comments added by Andy Wardley <abw@kfs.org> 09-Apr-98, based on an
-# _almost_ complete understanding of the package. Corrections and
-# comments are welcome.
-
# The members of %Internal are packages that are internal to perl.
# Carp will not report errors from within these packages if it
# can. The members of %CarpInternal are internal to Perl's warning
@@ -28,12 +24,6 @@ use Carp; our $VERSION = $Carp::VERSION;
# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
# text and function arguments should be formatted when printed.
-# Comments added by Jos I. Boumans <kane@dwim.org> 11-Aug-2004
-# I can not get %CarpInternal or %Internal to work as advertised,
-# therefore leaving it out of the below documentation.
-# $CarpLevel may be decprecated according to the last comment, but
-# after 6 years, it's still around and in heavy use ;)
-
# disable these by default, so they can live w/o require Carp
$CarpInternal{Carp}++;
$CarpInternal{warnings}++;
@@ -48,6 +38,11 @@ our ($CarpLevel, $MaxArgNums, $MaxEvalLen, $MaxArgLen, $Verbose);
sub longmess_real {
# Icky backwards compatibility wrapper. :-(
+ #
+ # The story is that the original implementation hard-coded the
+ # number of call levels to go back, so calls to longmess were off
+ # by one. Other code began calling longmess and expecting this
+ # behaviour, so the replacement has to emulate that behaviour.
my $call_pack = caller();
if ($Internal{$call_pack} or $CarpInternal{$call_pack}) {
return longmess_heavy(@_);
@@ -234,6 +229,7 @@ sub short_error_loc {
return 0 unless defined($caller); # What happened?
redo if $Internal{$caller};
+ redo if $CarpInternal{$caller};
redo if $CarpInternal{$called};
redo if trusts($called, $caller, $cache);
redo if trusts($caller, $called, $cache);