Hi everybody. I have recently found a problem in resetting `$0' inside a script "sourced" with the `.' builtin. Not sure if it's a bug or if it's just me doing something that should not be done; hopefully you can tell. Here are some minimal examples exposing the problem: -*-*-*- $ cat main1.zsh 0=x v1=$0 v2=`echo "$0" | sed 's/x/y/g'` echo 0="$0" echo v1="$v1" echo v2="$v2" $ zsh main1.zsh; echo e=$? # this behaves OK 0=x v1=x v2=y e=0 -*-*-*- $ cat main2.zsh . ./inc2.zsh echo 0="$0"' echo v="$v" $ cat inc2.zsh 0=x v=$0 $ zsh main2.zsh; echo e=$? # this causes zsh to crash *** glibc detected *** zsh: double free or corruption (!prev): 0x08d91a18 *** ======= Backtrace: ========= /lib/i686/cmov/libc.so.6[0xb7dd98f4] /lib/i686/cmov/libc.so.6(cfree+0x96)[0xb7ddb896] zsh[0x80804ba] zsh(ingetc+0x1a2)[0x8080cc2] ... [CUT] (see the attachement) b7f87000-b7f88000 rw-p 0001c000 03:47 3156250 /lib/ld-2.9.so bff71000-bff87000 rw-p bffea000 00:00 0 [stack] Abortito e=134 -*-*-*- $ cat main3.zsh . ./inc3.zsh echo 0="$0"' echo v="$v" $ cat inc3.zsh 0=x v=`echo "$0"` $ zsh main3.zsh; echo e=$? # I'd expect $v to be "x", but... 0=main3.zsh v= e=0 -*-*-*- $ cat main4.zsh . ./inc4.zsh echo 0="$0"' echo v="$v" $ cat inc4.zsh setopt no_function_argzero 0=x v=`echo "$0"` $ zsh main4.zsh; echo e=$? # this causes zsh to crash *** glibc detected *** zsh: corrupted double-linked list: 0x0813aa20 *** ======= Backtrace: ========= /lib/i686/cmov/libc.so.6[0xb7dc836f] /lib/i686/cmov/libc.so.6[0xb7dc9e6d] /lib/i686/cmov/libc.so.6(__libc_malloc+0x95)[0xb7dcbcd5] zsh(zalloc+0x24)[0x808de44] zsh[0x809e347] zsh(parse_event+0x2f)[0x80a3fff] ... [CUT] (see the attachement) b7f75000-b7f76000 rw-p 0001c000 03:47 3156250 /lib/ld-2.9.so bfb60000-bfb76000 rw-p bffea000 00:00 0 [stack] -*-*-*- System information: $ uname -a Linux bigio 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686 GNU/Linux $ cat /etc/debian_version squeeze/sid $ zsh --version zsh 4.3.10 (i686-pc-linux-gnu) $ dpkg -l zsh ii zsh 4.3.10-5 A shell with lots of features $ dpkg -l libc6 ii libc6 2.9-25 GNU C Library: Shared libraries Regards, Stefano