From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12619 invoked from network); 2 May 2000 12:28:47 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 2 May 2000 12:28:47 -0000 Received: (qmail 27931 invoked by alias); 2 May 2000 12:28:32 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 11070 Received: (qmail 27915 invoked from network); 2 May 2000 12:28:32 -0000 Date: Tue, 2 May 2000 14:28:12 +0200 (MET DST) Message-Id: <200005021228.OAA03106@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: Peter Stephenson's message of Tue, 02 May 2000 13:01:53 +0100 Subject: Re: TRAPZERR() in chpwd() Peter Stephenson wrote: > Sven wrote > > It made things like `false && echo a; echo b' fail. The `echo b' > > wasn't executed. > > > > The simplest way to solve this is by saving and > > restoring donetrap around the execution of the pipelines. > > > > > > I haven't committed the patch... does anyone see a problem with it? > > Yes, the `donetrap' test which makes sure that the trap is only executed > once for each occurrence of a non-zero return status isn't working. (I > think this is pretty much the only reason for having donetrap as a static > variable, so saving it and restoring it essentially disables its staticness > altogether, although there may well be some subtlety I'm missing.) At least the things I triend my patch with work. > % trap 'print ERRR-or!' ZERR > % f() { false; } > % f > ERRR-or! > ERRR-or! > > How about a less drastic version of my previous patch? I think the point > is that we just need the `donetrap' effect but not the goto effect Yep. Bye Sven -- Sven Wischnowsky wischnow@informatik.hu-berlin.de