From d0693cf4b8b5224643f91c827658fb88fe377947 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 11 Jan 2017 10:23:00 +0100 Subject: [PATCH] =?utf8?q?LXDebug:=20bei=20SHOW=5FCALLER=20ersten=20Caller?= =?utf8?q?=20au=C3=9Ferhalb=20von=20LXDebug.pm=20nehmen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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«. --- SL/LXDebug.pm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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; -- 2.20.1