From cc1697192640f1e68b33593af0f1c350de5b7a04 Mon Sep 17 00:00:00 2001 From: tjg Date: Fri, 5 Oct 2001 11:05:33 +0000 Subject: alternative fix for fn prompt tailspin --- input.c | 13 +++++-------- 1 file 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 -- cgit v1.2.3