Re: automake-1.17 fails with latest Perl (5.41.8) - Possible precedence problem between ! and numeric eq (==)
Collin Funk <[email protected]> Wed, 29 Jan 2025 19:16:18 -0800
| Newsgroups | gmane.comp.sysutils.automake.general |
|---|---|
| Message-ID | <[email protected]> |
Igor Todorovski <[email protected]> writes: > This is the relevant code: > > return (!!$val == $neg) ? '##%' : ''; I've attached a patch that fixes this by quoting $val and the '!' operators. Maybe Automake shouldn't use: use warnings FATAL => 'all'; As was mentioned in the GitHub thread you linked and Perl's documentation [1]. For cases like this, where the interpreter warns about code it finds "problematic", but works as the programmer expected. Collin [1] https://perldoc.perl.org/warnings#Fatal-Warnings
0001-automake-fix-error-when-using-Perl-5.41.patch
(text/x-patch, 903 B)
From 5396a5709b3e676cd9576389dc0c76dfce57ec98 Mon Sep 17 00:00:00 2001 From: Collin Funk <[email protected]> Date: Wed, 29 Jan 2025 19:05:29 -0800 Subject: [PATCH] automake: fix error when using Perl 5.41+ Reported by Igor Todorovski <[email protected]> in <https://lists.gnu.org/archive/html/automake/2025-01/msg00000.html>. * bin/automake.in (transform): Quote the '!' operators so Perl doesn't warn about precedence. --- bin/automake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/automake.in b/bin/automake.in index 5d3e7c766..a3b74f485 100644 --- a/bin/automake.in +++ b/bin/automake.in @@ -6871,7 +6871,7 @@ sub transform ($\%) { my $neg = ($1 eq '!') ? 1 : 0; my $val = transform_token ($token, %$transform, $2); - return (!!$val == $neg) ? '##%' : ''; + return ((!!$val) == $neg) ? '##%' : ''; } else { -- 2.48.1