In an unrelated matter: 'integer -a a ; integer x ; (( a[x++]++ )) ; print "$...@]}"' dumps core on Solaris on SPARC hardware with this stack trace: 0000000100081d54 nv_getval (1003682c0, 100345430, 1003682f8, 100340ba0, 0, 0) + 594 0000000100026c78 nv_getv (1003682c0, 100368440, 1, 0, 0, 0) + 320 0000000100037cfc array_getval (1003682c0, 100368440, 1000000, 0, 0, 0) + 124 0000000100026ac4 nv_getv (1003682c0, 100368440, 0, 61, 0, ffffffff7fffe529) + 16c 0000000100081960 nv_getval (1003682c0, 0, 800000, 0, 0, 0) + 1a0 000000010007062c varsub (1003599a0, 6, 0, 0, 0, 0) + 1d04 000000010006c2f4 copyto (1003599a0, 0, 0, 100368440, 0, 0) + e1c 000000010006a32c sh_macexpand (100340420, 100360b60, ffffffff7fffede8, 0, 20, 0) + 39c 00000001000e4f98 arg_expand (100340420, 100360b60, ffffffff7fffede8, 0, 3fff0000, ffffffff7fffeb0c) + 1c8 00000001000e4898 sh_argbuild (100340420, ffffffff7ffff144, 100360b20, 0, 0, 0) + 148 00000001000ab678 sh_exec (100360b20, 5, 0, 0, 0, 0) + 468 00000001000af034 sh_exec (100360bc0, 25, 0, 100362e50, 0, 0) + 3e24 0000000100025e44 exfile (100340420, 100368100, 7ffffa88, 0, 5, 80808080) + 10ac 0000000100024d4c sh_main (3, ffffffff7ffffa68, 0, ffffffff7ffff988, 0, 0) + 100c 000000010002318c main (3, ffffffff7ffffa68, ffffffff7ffffa88, 1f5940, 1c80, 1c00) + 5c 00000001000230fc _start (0, 0, 0, 0, 0, 0) + 17c
On Wed, Jan 13, 2010 at 10:43 AM, Stephane Chazelas <[email protected]> wrote: > That problem has just been reported to the bash and zsh mailing > lists and it seems ksh93 is also affected. > > In ((a[subscript]++)), ((a[subscript]+=x)), ((a[subscript]*=x))... > it seems subscript is expanded twice which can have nasty side > effects such as > > $ ksh -c 'x=0; ((a[++x]++)); echo $x' > 2 > ~$ ksh -c 'for ((i=0;i<1000;i++)); do ((a[RANDOM%2]++)); done; echo > $((a[0]+a[1]))' > 953 > ~$ ksh -c 'for ((i=0;i<1000;i++)); do ((a[RANDOM%2]++)); done; echo > $((a[0]+a[1]))' > 985 > ~$ ksh -c 'for ((i=0;i<1000;i++)); do ((a[RANDOM%2]++)); done; echo > $((a[0]+a[1]))' > 1059 > > -- > Stephane > _______________________________________________ > ast-developers mailing list > [email protected] > https://mailman.research.att.com/mailman/listinfo/ast-developers > -- , _ _ , { \/`o;====- Olga Kryzhanovska -====;o`\/ } .----'-/`-/ [email protected] \-`\-'----. `'-..-| / Solaris/BSD//C/C++ programmer \ |-..-'` /\/\ /\/\ `--` `--` _______________________________________________ ast-developers mailing list [email protected] https://mailman.research.att.com/mailman/listinfo/ast-developers
