diff options
author | ZyX <kp-pav@yandex.ru> | 2017-02-24 05:10:31 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-02-24 05:10:31 +0300 |
commit | dfb28c524c07b8b4b0970d806fc03ed49bb84f39 (patch) | |
tree | 3e2870a64090395f7905113c9524c0b2996a015a | |
parent | fe30d8ccef17fff23676b8670dfec86444e2cb32 (diff) | |
download | rneovim-dfb28c524c07b8b4b0970d806fc03ed49bb84f39.tar.gz rneovim-dfb28c524c07b8b4b0970d806fc03ed49bb84f39.tar.bz2 rneovim-dfb28c524c07b8b4b0970d806fc03ed49bb84f39.zip |
buffer: Remove b:changedtick from b: before freeing b:
Avoids loosing b:changedtick value at `:bdelete`.
-rw-r--r-- | src/nvim/buffer.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 9e0dc75222..186205a28a 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -686,6 +686,15 @@ free_buffer_stuff ( free_buf_options(buf, true); ga_clear(&buf->b_s.b_langp); } + { + // Avoid loosing b:changedtick when deleting buffer: clearing variables + // implies using clear_tv() on b:changedtick and that sets changedtick to + // zero. + hashitem_T *const changedtick_hi = hash_find( + &buf->b_vars->dv_hashtab, (const char_u *)"changedtick"); + assert(changedtick_hi != NULL); + hash_remove(&buf->b_vars->dv_hashtab, changedtick_hi); + } vars_clear(&buf->b_vars->dv_hashtab); // free all internal variables hash_init(&buf->b_vars->dv_hashtab); buf_init_changedtick(buf); |