diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-10-26 20:10:41 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-10-26 20:53:39 +0800 |
commit | 46a54dd6a03f51ba08142abe0aa5710705917987 (patch) | |
tree | 6b88d5ab645201a103cad3a67a98eadb07e6e5b4 /src/nvim/eval.c | |
parent | ef363ed37cdf5c460cca840aebc825011e0294ee (diff) | |
download | rneovim-46a54dd6a03f51ba08142abe0aa5710705917987.tar.gz rneovim-46a54dd6a03f51ba08142abe0aa5710705917987.tar.bz2 rneovim-46a54dd6a03f51ba08142abe0aa5710705917987.zip |
vim-patch:8.2.1852: map() returing zero for NULL list is unexpected
Problem: map() returing zero for NULL list is unexpected.
Solution: Return the empty list. (closes vim/vim#7133)
https://github.com/vim/vim/commit/ffdf8adfa8108d4765fdc68abbd2fe49a4292b25
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index ffbe66aa25..8bd91ec9a2 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -4786,20 +4786,20 @@ void filter_map(typval_T *argvars, typval_T *rettv, int map) int save_did_emsg; int idx = 0; + // Always return the first argument, also on failure. + tv_copy(&argvars[0], rettv); + if (argvars[0].v_type == VAR_BLOB) { - tv_copy(&argvars[0], rettv); if ((b = argvars[0].vval.v_blob) == NULL) { return; } } else if (argvars[0].v_type == VAR_LIST) { - tv_copy(&argvars[0], rettv); if ((l = argvars[0].vval.v_list) == NULL || (!map && var_check_lock(tv_list_locked(l), arg_errmsg, TV_TRANSLATE))) { return; } } else if (argvars[0].v_type == VAR_DICT) { - tv_copy(&argvars[0], rettv); if ((d = argvars[0].vval.v_dict) == NULL || (!map && var_check_lock(d->dv_lock, arg_errmsg, TV_TRANSLATE))) { return; |