mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 20:08:17 +00:00
eval: Do not allocate b:changedtick dictionary item
This commit is contained in:
@@ -1443,17 +1443,18 @@ static int top_file_num = 1; ///< highest file number
|
||||
static inline void buf_init_changedtick(buf_T *const buf)
|
||||
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
dictitem_T *const changedtick_di = dictitem_alloc((char_u *)"changedtick");
|
||||
// For some reason `islocked('b:changedtick')` should return 1. It does not
|
||||
// do so for other read-only variables which are normally VAR_FIXED.
|
||||
changedtick_di->di_flags |= DI_FLAGS_RO|DI_FLAGS_FIX;
|
||||
changedtick_di->di_tv = (typval_T) {
|
||||
.v_type = VAR_NUMBER,
|
||||
.v_lock = VAR_FIXED,
|
||||
.vval.v_number = buf->b_changedtick,
|
||||
buf->changedtick_di = (dictitem16_T) {
|
||||
.di_flags = DI_FLAGS_RO|DI_FLAGS_FIX, // Must not include DI_FLAGS_ALLOC.
|
||||
.di_tv = (typval_T) {
|
||||
.v_type = VAR_NUMBER,
|
||||
.v_lock = VAR_FIXED,
|
||||
.vval.v_number = buf->b_changedtick,
|
||||
},
|
||||
};
|
||||
dict_add(buf->b_vars, changedtick_di);
|
||||
buf->changedtick_val = &changedtick_di->di_tv.vval.v_number;
|
||||
STATIC_ASSERT(sizeof("changedtick") <= sizeof(buf->changedtick_di.di_key),
|
||||
"buf->changedtick_di cannot hold large enough keys");
|
||||
memcpy(buf->changedtick_di.di_key, "changedtick", sizeof("changedtick"));
|
||||
dict_add(buf->b_vars, (dictitem_T *)&buf->changedtick_di);
|
||||
}
|
||||
|
||||
/// Add a file name to the buffer list.
|
||||
|
Reference in New Issue
Block a user