diff options
| author | Zack Weinberg <zack@owlfolio.org> | 2023-12-11 11:25:54 -0500 |
|---|---|---|
| committer | Zack Weinberg <zack@owlfolio.org> | 2023-12-11 11:40:11 -0500 |
| commit | 185d1db28b48f78eb480a8d19db100ecda7a4fc1 (patch) | |
| tree | c8d400e28eb91d2bb7a588572916fd3ae1412589 | |
| parent | 39d96e6fff7ceae63b823872602caf4d255a38c8 (diff) | |
| download | autoconf-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.pm | 11 | ||||
| -rw-r--r-- | lib/Autom4te/Request.pm | 11 |
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"; } |
