From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29047 invoked from network); 26 Aug 2008 02:59:24 -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: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 26 Aug 2008 02:59:24 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 25986 invoked from network); 26 Aug 2008 02:59:15 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 26 Aug 2008 02:59:15 -0000 Received: (qmail 14239 invoked by alias); 26 Aug 2008 02:59:11 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 25535 Received: (qmail 14221 invoked from network); 26 Aug 2008 02:59:09 -0000 Received: from bifrost.dotsrc.org (130.225.254.106) by sunsite.dk with SMTP; 26 Aug 2008 02:59:09 -0000 Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.231]) by bifrost.dotsrc.org (Postfix) with ESMTP id 7207B8030848 for ; Tue, 26 Aug 2008 04:59:05 +0200 (CEST) Received: by rv-out-0506.google.com with SMTP id g37so1594725rvb.21 for ; Mon, 25 Aug 2008 19:59:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=eLEFHyuuAciQRDrnw5iqrn3adNukKaLqw+eVWkJ54Y0=; b=RCwHQWTMXEEGtvPO6Ecc83bZAoR5OKQZ634G+xI+HkjbTnK11mNADxz/Uge+VTGyyr YqdC8cug51E3xJydYjrcZigNUFHoAu2UfdpEH6LtSJze4nMR8YFdfg6DokYuuKewoDMn MgeFFUhtfHIRVTs6iX4ddbN0ovI/EWhSeiwyQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=xBWs5o30pl9fgYYI2cMElDcLrCfaHrTnhg9eJagQ/FP1LcgKACFB3pz/s8fXA9MhWe AoyVXa9Nb9XbwRM0hY+It1BKeNEJ/iuPMAZJ7WHHwHkkqBBz3nn9HEfTaasw595/OQNH 9QrxDGtERqYM09lwwzs3WBzxTeSDYwjUom+cU= Received: by 10.114.95.1 with SMTP id s1mr4176793wab.13.1219719543469; Mon, 25 Aug 2008 19:59:03 -0700 (PDT) Received: by 10.114.159.2 with HTTP; Mon, 25 Aug 2008 19:59:03 -0700 (PDT) Message-ID: <6cd6de210808251959t6eb681c8sb30e4db879b87b17@mail.gmail.com> Date: Mon, 25 Aug 2008 22:59:03 -0400 From: "Rocky Bernstein" To: "Peter Stephenson" Subject: Re: skipping assignment and function statements; Interactive comments Cc: "Zsh hackers list" In-Reply-To: <20080825182229.50299852@pws-pc> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <6cd6de210808222115x56de11bdv957bb8cc21358789@mail.gmail.com> <20080825182229.50299852@pws-pc> X-Virus-Scanned: ClamAV 0.92.1/8089/Tue Aug 26 02:28:51 2008 on bifrost X-Virus-Status: Clean Thanks! Seems to work fine. (Now I have to work out my own regression tests for on this ;-) On Mon, Aug 25, 2008 at 1:22 PM, Peter Stephenson wrote: > On Sat, 23 Aug 2008 00:15:31 -0400 > "Rocky Bernstein" wrote: >> I just added a skip command to zshdb (and committed to github), but it >> seems that assignment statements and function definitions are not >> really skipped. > > Yes, thanks, there's yet another infuriating special case of the sort > that makes me wish I'd picked an easier project. > > That's the third change here; the stuff with intrap is because it > doesn't detect that it's already inside a trap (and hence should skip > debugging) until it gets into dotrapargs(), and in this case it seems > neater not to go to the trouble. This will be even more sensible when I > get around to regenerating the line to be debugged at this point. > > Index: Src/exec.c > =================================================================== > RCS file: /cvsroot/zsh/zsh/Src/exec.c,v > retrieving revision 1.141 > diff -u -r1.141 exec.c > --- Src/exec.c 22 Aug 2008 15:41:31 -0000 1.141 > +++ Src/exec.c 25 Aug 2008 17:21:19 -0000 > @@ -1068,7 +1068,7 @@ > lineno = lnp1 - 1; > } > > - if (sigtrapped[SIGDEBUG] && isset(DEBUGBEFORECMD)) { > + if (sigtrapped[SIGDEBUG] && isset(DEBUGBEFORECMD) && !intrap) { > int oerrexit_opt = opts[ERREXIT]; > opts[ERREXIT] = 0; > noerrexit = 1; > @@ -1086,11 +1086,12 @@ > donedebug = isset(ERREXIT) ? 2 : 1; > opts[ERREXIT] = oerrexit_opt; > } else > - donedebug = 0; > + donedebug = intrap ? 1 : 0; > > if (ltype & Z_SIMPLE) { > next = state->pc + WC_LIST_SKIP(code); > - execsimple(state); > + if (donedebug != 2) > + execsimple(state); > state->pc = next; > goto sublist_done; > } > Index: Test/C03traps.ztst > =================================================================== > RCS file: /cvsroot/zsh/zsh/Test/C03traps.ztst,v > retrieving revision 1.14 > diff -u -r1.14 C03traps.ztst > --- Test/C03traps.ztst 7 Aug 2008 16:25:16 -0000 1.14 > +++ Test/C03traps.ztst 25 Aug 2008 17:21:19 -0000 > @@ -415,6 +415,20 @@ > >3 three > >5 five > > + # Assignments are a special case, since they use a simpler > + # wordcode type, so we need to test skipping them separately. > + fn() { > + setopt localtraps localoptions debugbeforecmd > + trap '(( LINENO == 4 )) && setopt errexit' DEBUG > + x=three > + x=four > + print $LINENO $x > + [[ -o errexit ]] && print "Hey, ERREXIT is set!" > + } > + fn > +1:Skip assignment from DEBUG trap > +>5 three > + > %clean > > rm -f TRAPEXIT > > > -- > Peter Stephenson > Web page now at http://homepage.ntlworld.com/p.w.stephenson/ >