diff options
-rw-r--r-- | shell/ash.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c index fc1b5d927..0c8480587 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -10125,6 +10125,9 @@ popfile(void) { struct parsefile *pf = g_parsefile; + if (pf == &basepf) + return; + INT_OFF; if (pf->pf_fd >= 0) close(pf->pf_fd); @@ -12286,7 +12289,7 @@ expandstr(const char *ps) static int evalstring(char *s, int flags) { - struct jmploc *volatile savehandler = exception_handler; + struct jmploc *volatile savehandler; struct jmploc jmploc; int ex; @@ -12307,10 +12310,10 @@ evalstring(char *s, int flags) * But if we skip popfile(), we hit EOF in eval's string, and exit. */ savehandler = exception_handler; - exception_handler = &jmploc; ex = setjmp(jmploc.loc); if (ex) goto out; + exception_handler = &jmploc; while ((n = parsecmd(0)) != NODE_EOF) { int i; |