autom4te: Don’t crash if Data::Dumper::Sortkeys is unavailable.

Commit c2ab755698 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 05e295b60c.  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.
This commit is contained in:
Zack Weinberg 2023-12-11 11:25:54 -05:00
parent 39d96e6fff
commit 185d1db28b
2 changed files with 14 additions and 8 deletions

View File

@ -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";
}

View File

@ -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";
}