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 | |
| 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')
| -rw-r--r-- | src/nvim/eval/funcs.c | 12 | ||||
| -rw-r--r-- | src/nvim/eval/typval.c | 13 |
2 files changed, 5 insertions, 20 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 177f64ebba..0506c08b07 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -2097,12 +2097,6 @@ static void findfilendir(typval_T *argvars, typval_T *rettv, int find_what) } } -/// "filter()" function -static void f_filter(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) -{ - filter_map(argvars, rettv, false); -} - /// "finddir({fname}[, {path}[, {count}]])" function static void f_finddir(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) { @@ -4488,12 +4482,6 @@ static void f_luaeval(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) nlua_typval_eval(cstr_as_string((char *)str), &argvars[1], rettv); } -/// "map()" function -static void f_map(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) -{ - filter_map(argvars, rettv, true); -} - static void find_some_match(typval_T *const argvars, typval_T *const rettv, const SomeMatchType type) { 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; |