-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

> > 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.

As quickly discussed between door and fish tang, I extended the tests to also 
test lksh (which does not have rotation operators).

- -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

iQJOBAEBCAA4BQJXrespMRpodHRwczovL3d3dy5kb21pbmlrLWdlb3JnZS5kZS9n
cGctcG9saWN5LnR4dC5hc2MACgkQt5o8FqDE8pYjDxAAiP9tQ564FwTXEWAhKZLc
7pDXH94vPYOsA1+zMupO8AMskvjAJAHV4mSJogczFm4KFiXrLBYSbXmeBBn0EVP+
X16OUWxEmODB8otN/i75hjBG2ph0CAoyxAkE+nhpD37QwAa6GG5lwzFsOQ37hK/K
mLEyMN4AKGi/doUpB8ScP9u0MD+7qQyU3DAeOLLhkR8KAp4mfcevztn970RZR21s
QnLbyDyZCvK/8KExGeVwUd8k2RnjXaRB6/2nuuaL9yMSWqyXoUx3u6LMR/Zs36zr
OFIQDO00z2pCigo5HKskTzyAi603Fg/VsOL3DvECcvuSgkVS2ogY2gThOCVn4CIS
sOjKCdkqfgC94Dy3eW9KwKRxg7LgXSbSe/PiZmBx5UdW1poyKPVdlSW3W856yx1i
IdmVYsQXnAaUZkFqxuoRUhtmEGCP6XYuzne6eqz5onFBmH5QcZ4KcKb8lquilN8H
3Kspdh/9N6rpuowo33D6sbtGBCxLOAvAtGBe2AqPm0IqP9xK9R0uqe4Zg6A1RGxk
y6PkcltoekIWbnpnFssXXP1VGXyJk5/+7AxgszU14owRQQZ7p2maq9RkD0gjlCYe
UW0hTASOYd7bPhXY/BFDxUs/CEACcr9PfiwEzxH0/ENhDZAmEWBpQFTPRkmi4mXv
yAh5O3RkLg7BRJkqMTCs2bQ=
=iFuQ
-----END PGP SIGNATURE-----
--- check.t.old	2016-08-12 16:01:43.306225160 +0200
+++ check.t	2016-08-12 17:22:38.138575000 +0200
@@ -6423,6 +6423,173 @@
 stdin:
 	for s in s; do break; done; print -s s
 ---
+name: regression-68
+description:
+	Check that all expr operators work as expected
+category: shell:legacy-no
+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: regression-68-legacy
+description:
+	Check that all expr operators work as expected
+	lksh does not have the rotation operators ^<, ^>, ^<= and ^>=
+category: shell:legacy-yes
+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 >> 1 ))
+	echo $(( a &= 4 ))
+	echo $(( a ^= a ))
+	echo $(( a |= 5 ))
+	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
+	4
+	2
+	6
+	0
+	5
+	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

Reply via email to