1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-12-28 16:15:02 +01:00

Apply 19308 (## on its own in arithmetic.

4.0.8
This commit is contained in:
Peter Stephenson 2003-12-18 10:49:52 +00:00
parent f93857ab65
commit 4ad8d51ab9
5 changed files with 113 additions and 3 deletions

View file

@ -1,3 +1,11 @@
2003-12-18 Peter Stephenson <pws@csr.com>
* unposted: Config/version.mk, Completion/Unix/Command/.distfiles:
zsh-4.0.8.
* Oliver: 19308: Src/utils.c, Test/C01arith.ztst:
fix crash with lonely ## in arithmetic.
2003-12-17 Clint Adams <clint@zsh.org>
* Stephen Rüger: 19255: Completion/Debian/Command/_apt: update

View file

@ -21,4 +21,5 @@ _global _figlet _ifconfig _last _larch
_lsof _mt _xmlsoft _elinks _tidy _python
_antiword _renice _sablotron _cdrecord _aap _du
_rar _vorbis _subversion _screen _nice
_ecasound _gpg _nmap
'

View file

@ -27,5 +27,5 @@
# This must also serve as a shell script, so do not add spaces around the
# `=' signs.
VERSION=4.0.7
VERSION_DATE='June 18, 2003'
VERSION=4.0.8
VERSION_DATE='December 17, 2003'

View file

@ -3470,7 +3470,10 @@ getkeystring(char *s, int *len, int fromwhere, int *misc)
}
DPUTS(fromwhere == 4, "BUG: unterminated $' substitution");
*t = '\0';
*len = t - buf;
if (fromwhere == 6)
*misc = 0;
else
*len = t - buf;
return buf;
}

98
Test/C01arith.ztst Normal file
View file

@ -0,0 +1,98 @@
# Tests corresponding to the texinfo node `Arithmetic Evaluation'
%test
integer light there
(( light = 42 )) &&
let 'there = light' &&
print $(( there ))
0:basic integer arithmetic
>42
float light there
integer rnd
(( light = 3.1415 )) &&
let 'there = light' &&
print -- $(( rnd = there * 10000 ))
# save rounding problems by converting to integer
0:basic floating point arithmetic
>31415
print $(( 0x10 + 0X01 + 2#1010 ))
0:base input
>27
float light
(( light = 4 ))
print $light
typeset -F light
print $light
0:conversion to float
>4.000000000e+00
>4.0000000000
integer i
(( i = 32.5 ))
print $i
0:conversion to int
>32
integer i
(( i = 4 - - 3 * 7 << 1 & 7 ^ 1 | 16 ** 2 ))
print $i
0:precedence (arithmetic)
>1591
print $(( 1 < 2 || 2 < 2 && 3 > 4 ))
0:precedence (logical)
>1
print $(( 1 + 4 ? 3 + 2 ? 4 + 3 ? 5 + 6 ? 4 * 8 : 0 : 0 : 0 : 0 ))
0:precedence (ternary)
>32
print $(( 3 ? 2 ))
1:parsing ternary (1)
?ZTST_execchunk:2: ':' expected
print $(( 3 ? 2 : 1 : 4 ))
1:parsing ternary (2)
?ZTST_execchunk:2: ':' without '?'
print $(( 0, 4 ? 3 : 1, 5 ))
0:comma operator
>5
foo=000
print $(( ##A + ##\C-a + #foo + $#foo ))
0:#, ## and $#
>117
print $((##))
0:## without following character
>0
print $((## ))
0:## followed by a space
>32
integer i
(( i = 3 + 5 * 1.75 ))
print $i
0:promotion to float
>11
typeset x &&
(( x = 3.5 )) &&
print $x &&
(( x = 4 )) &&
print $x
0:use of scalars to store integers and floats
>3.5
>4
(( newarray[unsetvar]++ ))
(( newarray[unsetvar]++ ))
print ${(t)newarray} ${#newarray} ${newarray[1]}
0:setting array elements in math context
>array 1 2