From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25007 invoked from network); 30 Apr 2000 17:03:35 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 30 Apr 2000 17:03:35 -0000 Received: (qmail 27047 invoked by alias); 30 Apr 2000 17:03:28 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 11029 Received: (qmail 27026 invoked from network); 30 Apr 2000 17:03:27 -0000 From: "Bart Schaefer" Message-Id: <1000430170322.ZM4752@candle.brasslantern.com> Date: Sun, 30 Apr 2000 17:03:22 +0000 In-Reply-To: Comments: In reply to Peter Stephenson "Re: PATCH: Re: localtraps causing core dump in 3.1.6+" (Apr 30, 3:29pm) References: X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: Re: PATCH: Re: localtraps causing core dump in 3.1.6+ MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Apr 30, 3:29pm, Peter Stephenson wrote: } Subject: Re: PATCH: Re: localtraps causing core dump in 3.1.6+ } } dosavetrap() now always copies the trap its saving. } } I've merged it round Bart's changes, which were neater than mine in some } places, and added a minimal localtraps test. You missed a few tidbits. } - if (!strncmp(nam, "TRAP", 4)) } + if (!strncmp(nam, "TRAP", 4) && (signum = getsignum(nam +4)) != -1) } hn = removetrap(getsignum(nam + 4)); --- zsh-forge/current/Src/hashtable.c Sun Apr 30 09:56:30 2000 +++ Src/hashtable.c Sun Apr 30 09:58:25 2000 @@ -789,8 +789,8 @@ HashNode hn; int signum; - if (!strncmp(nam, "TRAP", 4) && (signum = getsignum(nam +4)) != -1) - hn = removetrap(getsignum(nam + 4)); + if (!strncmp(nam, "TRAP", 4) && (signum = getsignum(nam + 4)) != -1) + hn = removetrap(signum); else hn = removehashnode(shfunctab, nam); --- zsh-forge/current/Src/signals.c Sun Apr 30 09:56:30 2000 +++ Src/signals.c Sun Apr 30 10:01:28 2000 @@ -674,7 +674,6 @@ } else { st->list = sigfuncs[sig] ? dupeprog(sigfuncs[sig], 0) : NULL; } - noerrs = !!st->list; if (!savetraps) savetraps = znewlinklist(); /* @@ -731,9 +730,7 @@ void unsettrap(int sig) { - int ne = noerrs; HashNode hn = removetrap(sig); - noerrs = ne; if (hn) shfunctab->freenode(hn); } -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com