diff options
| author | tjg <tjg> | 2001-10-05 11:05:33 +0000 |
|---|---|---|
| committer | Toby Goodwin <toby@paccrat.org> | 2015-05-16 21:23:19 +0100 |
| commit | cc1697192640f1e68b33593af0f1c350de5b7a04 (patch) | |
| tree | 6ce1d9977e5b5518a6457ebf6fd171d8e22b8810 | |
| parent | 8731b3ebc39715005c402d746e282fe2edfa7118 (diff) | |
alternative fix for fn prompt tailspin
| -rw-r--r-- | input.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -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 |