From 4e92cb89227aa006b421b88be064b91da43489dc Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Sun, 20 Jun 2010 14:12:38 +0100 Subject: [PATCH] Make warnings::__chk default the returned caller's bitmask to 0. This removes defined checks in subsequence code paths, reducing complexity. --- lib/warnings.pm | 8 +++----- warnings.pl | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/warnings.pm b/lib/warnings.pm index 3ea05e2..ef91ff6 100644 --- a/lib/warnings.pm +++ b/lib/warnings.pm @@ -451,7 +451,8 @@ sub __chk $i = _error_loc(); # see where Carp will allocate the error } - my $callers_bitmask = (caller($i))[9] ; + # Defaulting this to 0 reduces complexity in code paths below. + my $callers_bitmask = (caller($i))[9] || 0 ; return ($callers_bitmask, $offset, $i) ; } @@ -467,7 +468,6 @@ sub enabled my ($callers_bitmask, $offset, $i) = __chk(@_) ; - return 0 unless defined $callers_bitmask ; return vec($callers_bitmask, $offset, 1) || vec($callers_bitmask, $Offsets{'all'}, 1) ; } @@ -479,7 +479,6 @@ sub fatal_enabled my ($callers_bitmask, $offset, $i) = __chk(@_) ; - return 0 unless defined $callers_bitmask; return vec($callers_bitmask, $offset + 1, 1) || vec($callers_bitmask, $Offsets{'all'} + 1, 1) ; } @@ -507,8 +506,7 @@ sub warnif my ($callers_bitmask, $offset, $i) = __chk(@_) ; return - unless defined $callers_bitmask && - (vec($callers_bitmask, $offset, 1) || + unless (vec($callers_bitmask, $offset, 1) || vec($callers_bitmask, $Offsets{'all'}, 1)) ; require Carp; diff --git a/warnings.pl b/warnings.pl index 149d010..25dd302 100644 --- a/warnings.pl +++ b/warnings.pl @@ -736,7 +736,8 @@ sub __chk $i = _error_loc(); # see where Carp will allocate the error } - my $callers_bitmask = (caller($i))[9] ; + # Defaulting this to 0 reduces complexity in code paths below. + my $callers_bitmask = (caller($i))[9] || 0 ; return ($callers_bitmask, $offset, $i) ; } @@ -752,7 +753,6 @@ sub enabled my ($callers_bitmask, $offset, $i) = __chk(@_) ; - return 0 unless defined $callers_bitmask ; return vec($callers_bitmask, $offset, 1) || vec($callers_bitmask, $Offsets{'all'}, 1) ; } @@ -764,7 +764,6 @@ sub fatal_enabled my ($callers_bitmask, $offset, $i) = __chk(@_) ; - return 0 unless defined $callers_bitmask; return vec($callers_bitmask, $offset + 1, 1) || vec($callers_bitmask, $Offsets{'all'} + 1, 1) ; } @@ -792,8 +791,7 @@ sub warnif my ($callers_bitmask, $offset, $i) = __chk(@_) ; return - unless defined $callers_bitmask && - (vec($callers_bitmask, $offset, 1) || + unless (vec($callers_bitmask, $offset, 1) || vec($callers_bitmask, $Offsets{'all'}, 1)) ; require Carp; -- 1.8.3.1