From 2d85a2951ce0a2777fc333b97bb219ddf8a2431a Mon Sep 17 00:00:00 2001 From: iliajie Date: Wed, 12 Jul 2023 23:40:41 +0300 Subject: [PATCH] Fix to make errors less obscure --- web-lib-funcs.pl | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/web-lib-funcs.pl b/web-lib-funcs.pl index 9e5dd43f9..aa7548b1d 100755 --- a/web-lib-funcs.pl +++ b/web-lib-funcs.pl @@ -1688,6 +1688,17 @@ $main::no_miniserv_userdb = 1; &setvar('error-fatal', 1); my $msg = join("", @_); $msg =~ s/<[^>]*>//g; +my @stack; +for(my $i=0; my @stack_ = caller($i); $i++) { + push(@stack, \@stack_); + } +my $err_caller; +$err_caller = "$stack[1]->[1] (line $stack[1]->[2])" + if ($stack[1]->[1] && $stack[1]->[2]); +if ($err_caller) { + $err_caller =~ s/$root_directory\///; + $main::whatfailed = $main::whatfailed ? "$main::whatfailed : $err_caller" : $err_caller; + } my $error_details = (($ENV{'WEBMIN_DEBUG'} || $gconfig{'debug_enabled'}) ? "" : "\n"); my $error_output_right = sub { my ($err_msg) = @_; @@ -1711,7 +1722,7 @@ if (!$ENV{'REQUEST_METHOD'}) { &print_call_stack() if ($gconfig{'error_stack'}); } elsif (defined(&theme_error)) { - &theme_error(@_); + &theme_error({err => \@_, stack => \@stack, err_caller => $err_caller}); } elsif ($ENV{'REQUEST_URI'} =~ /json-error=1/) { my %jerror; @@ -1759,11 +1770,11 @@ else { print " $text{'error_file'} ", "$text{'error_line'} ", "$text{'error_sub'} \n"; - for($i=0; my @stack = caller($i); $i++) { + foreach my $stack (@stack) { print "\n"; - print "$stack[1]\n"; - print "$stack[2]\n"; - print "$stack[3]\n"; + print "$stack->[1]\n"; + print "$stack->[2]\n"; + print "$stack->[3]\n"; print "\n"; } print "\n";