From 4ad8d51ab9a5f30766707768c3e709710d58e4c2 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 18 Dec 2003 10:49:52 +0000 Subject: [PATCH] Apply 19308 (## on its own in arithmetic. 4.0.8 --- ChangeLog | 8 +++ Completion/Unix/Command/.distfiles | 1 + Config/version.mk | 4 +- Src/utils.c | 5 +- Test/C01arith.ztst | 98 ++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 Test/C01arith.ztst diff --git a/ChangeLog b/ChangeLog index ecf2606d3..328bf48fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-12-18 Peter Stephenson + + * 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 * Stephen RĂ¼ger: 19255: Completion/Debian/Command/_apt: update diff --git a/Completion/Unix/Command/.distfiles b/Completion/Unix/Command/.distfiles index 5c99e85d4..047ee4f86 100644 --- a/Completion/Unix/Command/.distfiles +++ b/Completion/Unix/Command/.distfiles @@ -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 ' diff --git a/Config/version.mk b/Config/version.mk index 6d1fc0666..d8a81b207 100644 --- a/Config/version.mk +++ b/Config/version.mk @@ -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' diff --git a/Src/utils.c b/Src/utils.c index fafdd99d9..1d7d2e163 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -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; } diff --git a/Test/C01arith.ztst b/Test/C01arith.ztst new file mode 100644 index 000000000..536a23de4 --- /dev/null +++ b/Test/C01arith.ztst @@ -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