From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27028 invoked by alias); 11 Dec 2009 22:16:38 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 27503 Received: (qmail 252 invoked from network); 11 Dec 2009 22:16:26 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 Received-SPF: pass (ns1.primenet.com.au: SPF record at ntlworld.com designates 81.103.221.49 as permitted sender) Date: Fri, 11 Dec 2009 22:16:15 +0000 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: segfault due to chpwd_function Message-ID: <20091211221615.7ac8cf0a@pws-pc> In-Reply-To: <091211110158.ZM18722@torch.brasslantern.com> References: <0742D8B8-F67E-48F7-BCCC-3F578A78D4B7@fysh.org> <200912111841.nBBIfJDp007685@news01.csr.com> <091211110158.ZM18722@torch.brasslantern.com> X-Mailer: Claws Mail 3.7.3 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Cloudmark-Analysis: v=1.1 cv=1ggfb5FlKZQUfF3vzm9UBYZ2uTfLsbs/8dSljwg5+mE= c=1 sm=0 a=q2GGsy2AAAAA:8 a=NLZqzBF-AAAA:8 a=799o6pAc2_DSepepQUAA:9 a=r1hCowzQOSK2Npdzc20A:7 a=mPqqaaz0tvmz3AF9Q_-xvUA1qZEA:4 a=I6wTmPyJxzYA:10 a=_dQi-Dcv4p4A:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 On Fri, 11 Dec 2009 11:01:58 -0800 Bart Schaefer wrote: > On Dec 11, 6:41pm, Peter Stephenson wrote: > } > } Are you able to post a self-contained function that shows the problem, > } with no external depenencies? > > This seems to do it: > > autoload -U promptinit > promptinit > prompt_chpwd() { > ((RANDOM % 2)) && prompt bart || prompt zefram > } > precmd_functions=(prompt_chpwd) Yes, that's pretty effective. > Note that I don't get the crash if I change from precmd_functions to > chpwd_functions, so my suspicion about "add-zsh-hook -D" seems to be > correct. Right, this seems to make it go away... Index: Src/utils.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/utils.c,v retrieving revision 1.234 diff -u -r1.234 utils.c --- Src/utils.c 3 Nov 2009 10:00:34 -0000 1.234 +++ Src/utils.c 11 Dec 2009 22:14:53 -0000 @@ -1181,6 +1181,7 @@ memcpy(arrnam + namlen, HOOK_SUFFIX, HOOK_SUFFIX_LEN); if ((arrptr = getaparam(arrnam))) { + arrptr = arrdup(arrptr); for (; *arrptr; arrptr++) { if ((shfunc = getshfunc(*arrptr))) { int newret = doshfunc(shfunc, lnklst, 1); -- Peter Stephenson Web page now at http://homepage.ntlworld.com/p.w.stephenson/