diff options
author | Peter Stephenson <pws@zsh.org> | 2017-05-18 09:33:08 +0100 |
---|---|---|
committer | Peter Stephenson <pws@zsh.org> | 2017-05-18 09:33:08 +0100 |
commit | 94014ff65bc2bdd752717792b156cdfcbc5b5c98 (patch) | |
tree | ec76c6a7a4c436e892db2fafa797624378cfba89 /Src/hashtable.c | |
parent | 171e7fa4c1d9cbf0d8ff35ee795e1599913aa329 (diff) | |
download | zsh-94014ff65bc2bdd752717792b156cdfcbc5b5c98.tar.gz zsh-94014ff65bc2bdd752717792b156cdfcbc5b5c98.tar.xz zsh-94014ff65bc2bdd752717792b156cdfcbc5b5c98.zip |
41113 (tweaked): Save current line linkage to history ring.
When saving history state save whether the current history line is linked into the ring and remove it, and restore as appropriate later. This avoids surprises where the history ring is freed and incorrectly frees the current state in curline, which has a different allocation strategy. Original patch tweaked to make restoring more logical.
Diffstat (limited to 'Src/hashtable.c')
-rw-r--r-- | Src/hashtable.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Src/hashtable.c b/Src/hashtable.c index ba5faad91..c34744cd8 100644 --- a/Src/hashtable.c +++ b/Src/hashtable.c @@ -1448,6 +1448,7 @@ freehistdata(Histent he, int unlink) if (!(he->node.flags & (HIST_DUP | HIST_TMPSTORE))) removehashnode(histtab, he->node.nam); + DPUTS(he->node.nam == chline, "Attempt to free chline in history data"); zsfree(he->node.nam); if (he->nwords) zfree(he->words, he->nwords*2*sizeof(short)); |