From: Moritz Bunkus Date: Wed, 11 Jan 2017 09:23:00 +0000 (+0100) Subject: LXDebug: bei SHOW_CALLER ersten Caller außerhalb von LXDebug.pm nehmen X-Git-Tag: release-3.5.4~1739 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=d0693cf4b8b5224643f91c827658fb88fe377947;p=kivitendo-erp.git LXDebug: bei SHOW_CALLER ersten Caller außerhalb von LXDebug.pm nehmen Andernfalls wird beim Aufruf von z.B. »SL::Controller::CustomerVendor → LXDebug::dump() → LXDebug::message()« fälschlicherweise »LXDebug::dump()« als Caller ausgegeben. Das interessiert die Nutzer*in aber im Zweifelsfall nicht, sondern »SL::Controller::CustomerVendor«. --- diff --git a/SL/LXDebug.pm b/SL/LXDebug.pm index b62b2da0f..e0b7cca3c 100644 --- a/SL/LXDebug.pm +++ b/SL/LXDebug.pm @@ -269,8 +269,18 @@ sub _write { my @prefixes = ($prefix); if ($options{show_caller}) { - my ($package, $filename, $line, $subroutine) = caller(1); - push @prefixes, "${filename}:${line}"; + my $level = 1; + while (1) { + my ($package, $filename, $line, $subroutine) = caller($level); + + if (($filename // '') =~ m{LXDebug\.pm$}) { + $level++; + next; + } + + push @prefixes, "${filename}:${line}"; + last; + } } $prefix = join ' ', grep { $_ } @prefixes;