aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/buffer.c
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-02-24 05:10:31 +0300
committerZyX <kp-pav@yandex.ru>2017-02-24 05:10:31 +0300
commitdfb28c524c07b8b4b0970d806fc03ed49bb84f39 (patch)
tree3e2870a64090395f7905113c9524c0b2996a015a /src/nvim/buffer.c
parentfe30d8ccef17fff23676b8670dfec86444e2cb32 (diff)
downloadrneovim-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`.
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r--src/nvim/buffer.c9
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);