summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Weinberg <zack@owlfolio.org>2023-12-11 11:25:54 -0500
committerZack Weinberg <zack@owlfolio.org>2023-12-11 11:40:11 -0500
commit185d1db28b48f78eb480a8d19db100ecda7a4fc1 (patch)
treec8d400e28eb91d2bb7a588572916fd3ae1412589
parent39d96e6fff7ceae63b823872602caf4d255a38c8 (diff)
downloadautoconf-185d1db28b48f78eb480a8d19db100ecda7a4fc1.tar.gz
autom4te: Don’t crash if Data::Dumper::Sortkeys is unavailable.
Commit c2ab755698db245898a4cc89149eb5df256e4bd0 added an unconditional use of Data::Dumper’s Sortkeys method, which was added in version 2.12_01 of that module. In terms of Perl versions, it is available in 5.8.x and later, and in 5.6.2, but not in 5.6.1 or earlier. At the time, our minimum Perl version was 5.10, but we lowered it to 5.6.0 again in 05e295b60cfdf378b7ed8c1f8563a5644d5d4689. It seems that commit was not actually tested with 5.6.1 or earlier. As we are only using Sortkeys to facilitate manual comparison of autom4te.cache/requests files, we can just ignore the method lookup failure with 5.6.[01] and everything will work fine without it. Tested on x86_64-unknown-netbsd9.3 with perl 5.6.1. * lib/Autom4te/C4che.pm (marshall): Ignore method lookup failure for Data::Dumper::Sortkeys with very old perl. * lib/Autom4te/Request.pm (marshall): Likewise.
-rw-r--r--lib/Autom4te/C4che.pm11
-rw-r--r--lib/Autom4te/Request.pm11
2 files changed, 14 insertions, 8 deletions
diff --git a/lib/Autom4te/C4che.pm b/lib/Autom4te/C4che.pm
index 523f15b..029138d 100644
--- a/lib/Autom4te/C4che.pm
+++ b/lib/Autom4te/C4che.pm
@@ -155,13 +155,16 @@ Serialize all the current requests.
sub marshall ($)
{
my ($caller) = @_;
- my $res = '';
my $marshall = Data::Dumper->new ([\@request], [qw (*request)]);
- $marshall->Indent(2)->Terse(0)->Sortkeys(1);
- $res = $marshall->Dump . "\n";
+ $marshall->Indent(2)->Terse(0);
- return $res;
+ # The Sortkeys method was added in Data::Dumper 2.12_01, so it is
+ # available in 5.8.x and 5.6.2 but not in 5.6.1 or earlier.
+ # Ignore failure of method lookup.
+ eval { $marshall->Sortkeys(1); };
+
+ return $marshall->Dump . "\n";
}
diff --git a/lib/Autom4te/Request.pm b/lib/Autom4te/Request.pm
index 53f9ad7..f4ede8d 100644
--- a/lib/Autom4te/Request.pm
+++ b/lib/Autom4te/Request.pm
@@ -59,14 +59,17 @@ struct
sub marshall($)
{
my ($caller) = @_;
- my $res = '';
# CALLER is an object: instance method.
my $marshall = Data::Dumper->new ([$caller]);
- $marshall->Indent(2)->Terse(0)->Sortkeys(1);
- $res = $marshall->Dump . "\n";
+ $marshall->Indent(2)->Terse(0);
- return $res;
+ # The Sortkeys method was added in Data::Dumper 2.12_01, so it is
+ # available in 5.8.x and 5.6.2 but not in 5.6.1 or earlier.
+ # Ignore failure of method lookup.
+ eval { $marshall->Sortkeys(1); };
+
+ return $marshall->Dump . "\n";
}