diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2016-01-27 21:57:45 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2016-01-27 22:10:38 -0800 |
commit | d18476ce5c0a76831192df8ba2006536206c6646 (patch) | |
tree | 4b92ab901bf75c8682970788f49d6d44013cdcf5 | |
parent | 572f8c85ab40c2adf389a33ea6f2f91c4a4fbb30 (diff) | |
download | zsh-d18476ce5c0a76831192df8ba2006536206c6646.tar.gz zsh-d18476ce5c0a76831192df8ba2006536206c6646.tar.xz zsh-d18476ce5c0a76831192df8ba2006536206c6646.zip |
37819: zshaddhistory hook works for any history file write, even upon keyboard interrupt
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/hist.c | 15 |
2 files changed, 14 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index e70ed9d80..a5fce1d79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2016-01-27 Barton E. Schaefer <schaefer@zsh.org> + * 37819: Src/hist.c: zshaddhistory hook is intended to work for + any history file write, even upon keyboard interrupt + * 37810: Src/Modules/zutil.c: repair handling of backslashes and of names starting with "+"/":"/"=" in zparseopts option specs diff --git a/Src/hist.c b/Src/hist.c index 007366a49..7f9e4dbbb 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -1378,7 +1378,6 @@ should_ignore_line(Eprog prog) mod_export int hend(Eprog prog) { - LinkList hookargs = newlinklist(); int flag, hookret, stack_pos = histsave_stack_pos; /* * save: @@ -1418,9 +1417,17 @@ hend(Eprog prog) DPUTS(hptr < chline, "History end pointer off start of line"); *hptr = '\0'; } - addlinknode(hookargs, "zshaddhistory"); - addlinknode(hookargs, chline); - callhookfunc("zshaddhistory", hookargs, 1, &hookret); + { + LinkList hookargs = newlinklist(); + int save_errflag = errflag; + errflag = 0; + + addlinknode(hookargs, "zshaddhistory"); + addlinknode(hookargs, chline); + callhookfunc("zshaddhistory", hookargs, 1, &hookret); + + errflag |= save_errflag; + } /* For history sharing, lock history file once for both read and write */ hf = getsparam("HISTFILE"); if (isset(SHAREHISTORY) && !lockhistfile(hf, 0)) { |