aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2021-04-03 17:48:39 +0200
committerGitHub <noreply@github.com>2021-04-03 17:48:39 +0200
commit804ea22944146a6607859dbfcf35d24946b065e2 (patch)
tree94d3ebac9ae1bcbbf45cc000e644155e419d39ba /src/nvim/eval/funcs.c
parentabdda664108646a8f1bd3112abb8083d721d38e6 (diff)
parent2df527e1ff1c599448b6b21953132c0022a8b9ad (diff)
downloadrneovim-804ea22944146a6607859dbfcf35d24946b065e2.tar.gz
rneovim-804ea22944146a6607859dbfcf35d24946b065e2.tar.bz2
rneovim-804ea22944146a6607859dbfcf35d24946b065e2.zip
Merge pull request #14226 from bfredl/luarefcount
lua: track reference ownership with ASAN when present
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 38002474af..51e5a27348 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -810,6 +810,7 @@ static void f_call(typval_T *argvars, typval_T *rettv, FunPtr fptr)
return;
}
+ bool owned = false;
char_u *func;
partial_T *partial = NULL;
dict_T *selfdict = NULL;
@@ -820,6 +821,7 @@ static void f_call(typval_T *argvars, typval_T *rettv, FunPtr fptr)
func = partial_name(partial);
} else if (nlua_is_table_from_lua(&argvars[0])) {
func = nlua_register_table_as_callable(&argvars[0]);
+ owned = true;
} else {
func = (char_u *)tv_get_string(&argvars[0]);
}
@@ -837,6 +839,9 @@ static void f_call(typval_T *argvars, typval_T *rettv, FunPtr fptr)
}
func_call(func, &argvars[1], partial, selfdict, rettv);
+ if (owned) {
+ func_unref(func);
+ }
}
/*