-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hi,
> The bug is a simple typo in the new exprtok.h - it seems to have slipped in > while refactoring the operator list to this new header file. > > Attached is a patch that fixes the issue. I have also gone and verified that > the same type of mistake didn't happen to other operators. Attached is a test case for all expr operators as well. It only tests operators as a unit, not arbitrary combinations of operators, because that's somewhat out of scope, but I tried to also to some sanity checks on the functions of the operators in addition to merely checking their existence ;). - -nik - -- PGP-Fingerprint: 3C9D 54A4 7575 C026 FB17 FD26 B79A 3C16 A0C4 F296 Dominik George · Mobil: +49-1520-1981389 Teckids e.V. · FrOSCon e.V. · OpenRheinRuhr e.V. Fellowship of the FSFE · Piratenpartei Deutschland Opencaching Deutschland e.V. · Debian Contributor LPIC-3 Linux Enterprise Professional (Security) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQJOBAEBCAA4BQJXreRNMRpodHRwczovL3d3dy5kb21pbmlrLWdlb3JnZS5kZS9n cGctcG9saWN5LnR4dC5hc2MACgkQt5o8FqDE8pZumw/9GEiBQqsFUfSZedTVDOCW oeNRXWmhcmblwBcGPIz2hwPGGjz1ovE9dY84Z0qUq2LRATq2KYSTGA9A/P21JonJ jtE9/1tQtdYNoF08N2rJrPpPDyEeMGxNs4iIuP+rSH9L96yLGErCIdjqWbXceTDA h0AAt7nOiKtEl5HLmmek3RwRbzdg/MeFmSeyUz7a3AzLxGzrd/GZ1V8uw/fvliRH Z2xKVmokBUNOSLH7xv7KswVDSLn7czU01o/65B27+nKmfnns5xduEbkz5w8j29ZW Jkc5+LTFdMWakRvWUlrqU+jDAJP1egGC6tpD+CRvFrXpozzd5fotJq+zptbwqb4A A9w9/nU9NA24ShtWOZ9tsDdl1I3jAAcEgy4Gq+rcqM6ukroJooiFgd//67uwIBRK IixeyfY0A8ZVto86dvKALgg8BzHWoiUVFfDFjbdqCXJkQIQmhM0wncn0tT+Ljc98 z+0Q1YrBxk33UdbQRiysnITxHnDIvZx1+Qdha6BEN3pgn+bIlzrlszHjt34rm1ix BP8Pbc44AVz1S+xM86Z5KXr0Ns+Jv8D5DP49GSf0mYFIpiFLI+rGVLorgPzJ2/BV ajd4uIEzgCMBPbGRdIejL7MijA0D1ZVw0A1gauNb5Qhwltq8h/ZEhZqCtH9OnuRo FAvyDFWvsCE0ff0c/YhZw8A= =hCjl -----END PGP SIGNATURE-----
--- check.t.old 2016-08-12 16:01:43.306225160 +0200 +++ check.t 2016-08-12 16:51:04.375659067 +0200 @@ -6423,6 +6423,92 @@ stdin: for s in s; do break; done; print -s s --- +name: regression-68 +description: + Check that all expr operators work as expected +stdin: + echo $(( a = 5 )) + echo $(( a++ )) + echo $(( a-- )) + echo $(( a == 5 )) $(( a == 6 )) + echo $(( a != 6 )) $(( a != 5 )) + echo $(( a *= 3 )) + echo $(( a /= 5 )) + echo $(( a %= 2 )) + echo $(( a += 9 )) + echo $(( a -= 5 )) + echo $(( a ^<= 1 )) + echo $(( a ^>= 2 )) + echo $(( a << 1 )) + echo $(( a >> 1 )) + echo $(( a &= 4 )) + echo $(( a ^= a )) + echo $(( a |= 5 )) + echo $(( 5 ^< 1 )) + echo $(( 5 ^> 1 )) + echo $(( 5 << 1 )) + echo $(( 5 >> 1 )) + echo $(( 5 <= 3 )) $(( 5 <= 2 )) $(( 5 <= 1 )) + echo $(( 5 >= 1 )) $(( 5 >= 2 )) $(( 5 >= 3 )) + echo $(( 5 < 3 )) $(( 5 < 2 )) $(( 5 < 1 )) + echo $(( 5 > 1 )) $(( 5 > 2 )) $(( 5 > 3 )) + echo $(( 1 && 1 )) $(( 1 && 0 )) $(( 0 && 1 )) $(( 0 && 0 )) + echo $(( 1 || 1 )) $(( 1 || 0 )) $(( 0 || 1 )) $(( 0 || 0 )) + echo $(( 5 * 3 )) + echo $(( 6 / 2 )) + echo $(( 5 % 5 )) $(( 5 % 4 )) $(( 5 % 1 )) $(( 5 % -1 )) $(( 5 % -2 )) + echo $(( 5 + 2 )) $(( 5 + 0 )) $(( 5 + -2 )) + echo $(( 5 - 2 )) $(( 5 - 0 )) $(( 5 - -2 )) + echo $(( 6 & 4 )) $(( 6 & 8 )) + echo $(( 4 ^ 2 )) $(( 4 ^ 4 )) + echo $(( 4 | 2 )) $(( 4 | 4 )) $(( 4 | 0 )) + echo $(( 1 ? 1 : 0 )) $(( 0 ? 1 : 0 )) + echo $(( 5, 2, 3 )) + echo $(( ~0 )) $(( ~1 )) $(( ~~1 )) + echo $(( !0 )) $(( !1 )) $(( !!1 )) + echo $(( (5) )) +expected-stdout: + 5 + 6 + 5 + 1 0 + 1 0 + 15 + 3 + 1 + 10 + 5 + 10 + -2147483646 + 4 + 2 + 6 + 0 + 5 + 10 + -2147483646 + 10 + 2 + 1 1 0 + 1 1 0 + 1 0 0 + 1 0 0 + 1 0 0 0 + 1 1 1 0 + 15 + 3 + 0 1 0 0 1 + 7 5 3 + 3 5 7 + 4 0 + 6 0 + 6 0 0 + 1 0 + 3 + -1 -2 1 + 1 0 1 + 5 +--- name: readonly-0 description: Ensure readonly is honoured for assignments and unset