diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/init.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 10962f9e2..064d2832a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-08-25 Bart Schaefer <schaefer@zsh.org> + + * 15707: Src/init.c: Fix history crash caused by re-entering + loop() when the `precmd' shell function uses `source' or `.'. + 2001-08-24 Sven Wischnowsky <wischnow@zsh.org> * 15705: Src/Zle/complete.c: test if hash table pointer is NULL diff --git a/Src/init.c b/Src/init.c index cbfaf5ad0..5a86800d1 100644 --- a/Src/init.c +++ b/Src/init.c @@ -107,6 +107,8 @@ loop(int toplevel, int justonce) pushheap(); for (;;) { freeheap(); + if (stophist == 3) /* re-entry via preprompt() */ + hend(NULL); hbegin(1); /* init history mech */ if (isset(SHINSTDIN)) { setblock_stdin(); @@ -114,7 +116,10 @@ loop(int toplevel, int justonce) int hstop = stophist; stophist = 3; preprompt(); - stophist = hstop; + if (stophist != 3) + hbegin(1); + else + stophist = hstop; errflag = 0; } } |