diff options
author | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-11-05 02:38:53 +0000 |
---|---|---|
committer | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-11-05 02:38:53 +0000 |
commit | 3cf23604b0327a698516eba7fcfaca99d6746f9d (patch) | |
tree | 1bd2d703144760333452613c2c90b92e54c8e1e3 /Src/init.c | |
parent | d3a79df906f5f653f34a40ab9cd33a8e5f9600b9 (diff) | |
download | zsh-3cf23604b0327a698516eba7fcfaca99d6746f9d.tar.gz zsh-3cf23604b0327a698516eba7fcfaca99d6746f9d.tar.xz zsh-3cf23604b0327a698516eba7fcfaca99d6746f9d.zip |
Merge of 22983: exit could loop for ever in two different ways.
Diffstat (limited to 'Src/init.c')
-rw-r--r-- | Src/init.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Src/init.c b/Src/init.c index 76797ab2a..0fde9f7ac 100644 --- a/Src/init.c +++ b/Src/init.c @@ -131,6 +131,15 @@ loop(int toplevel, int justonce) (tok == LEXERR && (!isset(SHINSTDIN) || !toplevel)) || justonce) break; + if (exit_pending) { + /* + * Something down there (a ZLE function?) decided + * to exit when there was stuff to clear up. + * Handle that now. + */ + stopmsg = 1; + zexit(exit_pending >> 1, 0); + } if (tok == LEXERR && !lastval) lastval = 1; continue; |