diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-08-17 09:43:00 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-08-17 11:21:10 +0800 |
commit | 8cbb2477cf70ea29105e3df17308e6d6a067c8e6 (patch) | |
tree | d0f81b872a4220930736f9e276b2eb4eac802f02 /src/nvim/eval/typval.c | |
parent | 22d9338afceae5f8ef3845f152dea07a19d512d1 (diff) | |
download | rneovim-8cbb2477cf70ea29105e3df17308e6d6a067c8e6.tar.gz rneovim-8cbb2477cf70ea29105e3df17308e6d6a067c8e6.tar.bz2 rneovim-8cbb2477cf70ea29105e3df17308e6d6a067c8e6.zip |
vim-patch:8.2.1969: Vim9: map() may change the list or dict item type
Problem: Vim9: map() may change the list or dict item type.
Solution: Add mapnew().
https://github.com/vim/vim/commit/ea696852e7abcdebaf7f17a7f23dc90df1f5e2ed
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src/nvim/eval/typval.c')
-rw-r--r-- | src/nvim/eval/typval.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c index abe31aab75..5b977e93c9 100644 --- a/src/nvim/eval/typval.c +++ b/src/nvim/eval/typval.c @@ -3249,22 +3249,19 @@ void tv_blob_alloc_ret(typval_T *const ret_tv) /// /// @param[in] from Blob object to copy from. /// @param[out] to Blob object to copy to. -void tv_blob_copy(typval_T *const from, typval_T *const to) - FUNC_ATTR_NONNULL_ALL +void tv_blob_copy(blob_T *const from, typval_T *const to) + FUNC_ATTR_NONNULL_ARG(2) { - assert(from->v_type == VAR_BLOB); - to->v_type = VAR_BLOB; to->v_lock = VAR_UNLOCKED; - if (from->vval.v_blob == NULL) { + if (from == NULL) { to->vval.v_blob = NULL; } else { tv_blob_alloc_ret(to); - int len = from->vval.v_blob->bv_ga.ga_len; + int len = from->bv_ga.ga_len; if (len > 0) { - to->vval.v_blob->bv_ga.ga_data - = xmemdup(from->vval.v_blob->bv_ga.ga_data, (size_t)len); + to->vval.v_blob->bv_ga.ga_data = xmemdup(from->bv_ga.ga_data, (size_t)len); } to->vval.v_blob->bv_ga.ga_len = len; to->vval.v_blob->bv_ga.ga_maxlen = len; |