From ea783c61e83adb1b7f4ca0314b3ddf4171896bf1 Mon Sep 17 00:00:00 2001
From: Dirk Koopman <djk@tobit.co.uk>
Date: Sat, 25 Apr 2020 00:47:02 +0100
Subject: [PATCH] do some ring printing if carp et al are called

---
 perl/DXDebug.pm | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/perl/DXDebug.pm b/perl/DXDebug.pm
index ca5339a1..634bf972 100644
--- a/perl/DXDebug.pm
+++ b/perl/DXDebug.pm
@@ -52,27 +52,29 @@ if (!defined $DB::VERSION) {
 	local $^W=0;
 	eval qq( sub confess { 
 	    \$SIG{__DIE__} = 'DEFAULT'; 
-        DXDebug::dbgprintring() unless DXDebug::isdbg('chan');
-        DXDebug::dbgclearring();
+        DXDebug::dbgprintring() if DXDebug('nologchan');
         DXDebug::dbg(\$@);
 		DXDebug::dbg(Carp::shortmess(\@_));
 	    exit(-1); 
 	}
 	sub croak { 
 		\$SIG{__DIE__} = 'DEFAULT'; 
-        DXDebug::dbgprintring() unless DXDebug::isdbg('chan');
-        DXDebug::dbgclearring();
+        DXDebug::dbgprintring() if DXDebug('nologchan');
         DXDebug::dbg(\$@);
 		DXDebug::dbg(Carp::longmess(\@_));
 		exit(-1); 
 	}
-	sub carp    { DXDebug::dbg(Carp::shortmess(\@_)); }
-	sub cluck   { DXDebug::dbg(Carp::longmess(\@_)); } 
-	);
+	sub carp { 
+        DXDebug::dbgprintring(25) if DXDebug('nologchan');
+        DXDebug::dbg(Carp::shortmess(\@_)); 
+    }
+	sub cluck { 
+        DXDebug::dbgprintring(25) if DXDebug('nologchan');
+        DXDebug::dbg(Carp::longmess(\@_)); 
+    } );
 
     CORE::die(Carp::shortmess($@)) if $@;
-}
-else {
+} else {
     eval qq( sub confess { die Carp::longmess(\@_); }; 
 			 sub croak { die Carp::shortmess(\@_); }; 
 			 sub cluck { warn Carp::longmess(\@_); }; 
@@ -215,8 +217,10 @@ sub longmess
 sub dbgprintring
 {
 	return unless $fp;
+	my $count = shift || $dbgringlth+1;
 	my $first;
-	while (my $l = shift @dbgring) {
+	my $l;
+	for ( ; $count > 0 && ($l = shift @dbgring); --$count) {
 		my ($t, $str) = split /\^/, $l, 2;
 		next unless $t;
 		my $lt = time;
-- 
2.43.0