aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-10-26 21:34:18 +0800
committerGitHub <noreply@github.com>2022-10-26 21:34:18 +0800
commitc00e711d5a860fb019f594d164b4327d942313f8 (patch)
tree6b88d5ab645201a103cad3a67a98eadb07e6e5b4 /src/nvim/eval.c
parentd60fa43466eaf59999e39860ce6d0ce2fa2cfb36 (diff)
parent46a54dd6a03f51ba08142abe0aa5710705917987 (diff)
downloadrneovim-c00e711d5a860fb019f594d164b4327d942313f8.tar.gz
rneovim-c00e711d5a860fb019f594d164b4327d942313f8.tar.bz2
rneovim-c00e711d5a860fb019f594d164b4327d942313f8.zip
Merge pull request #20814 from zeertzjq/vim-8.2.0610
vim-patch:8.2.{0610,0619,1852}
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 69bc26b82e..8bd91ec9a2 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -1449,6 +1449,7 @@ char *get_lval(char *const name, typval_T *const rettv, lval_T *const lp, const
key[len] = prevval;
}
if (wrong) {
+ tv_clear(&var1);
return NULL;
}
}
@@ -4785,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;