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.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)); |