summaryrefslogtreecommitdiff
path: root/input.c
diff options
context:
space:
mode:
authortjg <tjg>2001-10-05 11:05:33 +0000
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:23:19 +0100
commitcc1697192640f1e68b33593af0f1c350de5b7a04 (patch)
tree6ce1d9977e5b5518a6457ebf6fd171d8e22b8810 /input.c
parent8731b3ebc39715005c402d746e282fe2edfa7118 (diff)
alternative fix for fn prompt tailspin
Diffstat (limited to 'input.c')
-rw-r--r--input.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/input.c b/input.c
index 48c6a9c..c45444f 100644
--- a/input.c
+++ b/input.c
@@ -243,6 +243,7 @@ extern void flushu() {
extern Node *doit(bool clobberexecit) {
bool eof;
bool execit;
+ bool infnprompt;
Jbwrap j;
Estack e1;
Edata jerror;
@@ -250,6 +251,7 @@ extern Node *doit(bool clobberexecit) {
if (dashen)
clobberexecit = FALSE;
execit = clobberexecit;
+ infnprompt = FALSE;
sigsetjmp(j.j, 1);
jerror.jb = &j;
except(eError, jerror, &e1);
@@ -271,17 +273,12 @@ extern Node *doit(bool clobberexecit) {
List *s;
if (!dashen && fnlookup("prompt") != NULL) {
static char *arglist[] = { "prompt", NULL };
- Estack e3;
- Edata pjmp;
- Jbwrap pj;
-
- if (sigsetjmp(pj.j, 1) == 0) {
- pjmp.jb = &pj;
- except(eError, pjmp, &e3);
+ if (!infnprompt) {
+ infnprompt = TRUE;
funcall(arglist);
- unexcept();
}
+ infnprompt = FALSE;
}
if ((s = varlookup("prompt")) != NULL) {
#if EDITLINE || READLINE