From 71378a40308cd987626ebccb5882897d41c86c7a Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 11 Aug 2019 13:34:44 +0200 Subject: free_buffer: rework b:changedtick handling #9163 - Re-enable Test_BufLeave_Wipe. 66f5e5c7d7ce This is my (probably-wrong) application of Zyx's suggestion in #9163: > free_buffer_stuff() already removes changedtick. It is better to > make `free_options` a flag variable and avoid calling > buf_init_changedtick() based on some flag there: current workflow > looks weird as it first removes `b:changedtick`, then re-adds it > by calling buf_init_changedtick(), then remove again. > Also based on my understanding it looks logical to not remove > `b:changedtick`, but to *replace* it with something allocated if > needed based on examining reference count before calling > `unref_var_dict`. Because now you have key disappearing from > dictionary for no good reason. Patch-By: Nikolai Aleksandrovich Pavlov --- src/nvim/eval/typval.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/eval') diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c index 91a1d083c7..106b8f6eed 100644 --- a/src/nvim/eval/typval.c +++ b/src/nvim/eval/typval.c @@ -1272,7 +1272,7 @@ void tv_dict_item_free(dictitem_T *const item) /// @param[in] di Item to copy. /// /// @return [allocated] new dictionary item. -static dictitem_T *tv_dict_item_copy(dictitem_T *const di) +dictitem_T *tv_dict_item_copy(dictitem_T *const di) FUNC_ATTR_NONNULL_RET FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT { dictitem_T *const new_di = tv_dict_item_alloc((const char *)di->di_key); -- cgit