Subject: csh bug
To: None <cgd@netbsd.org, christos@netbsd.org, itohy@netbsd.org, mycroft@netbsd.org,>
From: Michael Shalayeff <mickey@lucifier.remote.dti.net>
List: netbsd-bugs
Date: 08/29/2000 21:54:45
re
you've been choosen as people last comitted to csh.
i've just found this bug in bsd csh.
i hope it will be usefull.
it fixes a coredump under certain conditions.
cu
Index: csh.c
===================================================================
RCS file: /cvs/src/bin/csh/csh.c,v
retrieving revision 1.10
diff -u -r1.10 csh.c
--- csh.c 1999/02/21 08:28:00 1.10
+++ csh.c 2000/08/30 01:43:02
@@ -522,6 +522,7 @@
* start-up scripts.
*/
reenter = setexit(); /* PWP */
+ exitset++;
haderr = 0; /* In case second time through */
if (!fast && reenter == 0) {
/* Will have value(STRhome) here because set fast if don't */
Index: csh.h
===================================================================
RCS file: /cvs/src/bin/csh/csh.h,v
retrieving revision 1.5
diff -u -r1.5 csh.h
--- csh.h 1999/08/06 20:41:04 1.5
+++ csh.h 2000/08/30 01:43:03
@@ -185,6 +185,7 @@
#include <setjmp.h>
jmp_buf reslab;
+int exitset;
#define setexit() (setjmp(reslab))
#define reset() longjmp(reslab, 1)
Index: error.c
===================================================================
RCS file: /cvs/src/bin/csh/error.c,v
retrieving revision 1.2
diff -u -r1.2 error.c
--- error.c 1997/11/15 21:51:28 1.2
+++ error.c 2000/08/30 01:43:03
@@ -398,7 +398,7 @@
/*
* Go away if -e or we are a child shell
*/
- if (exiterr || child)
+ if (!exitset || exiterr || child)
xexit(1);
/*
--
paranoic mickey (my employers have changed but, the name has remained)