aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ennen <mike.ennen@gmail.com>2016-12-15 22:30:05 -0700
committerMichael Ennen <mike.ennen@gmail.com>2017-02-14 17:38:17 -0700
commit6563d859904837790515d790ecadaa4f06064471 (patch)
tree67111e0ae7730037e5e68f8e3295b362f29f410c
parentcbaa87a63912ea64a4c8027532b86114a6571a19 (diff)
downloadrneovim-6563d859904837790515d790ecadaa4f06064471.tar.gz
rneovim-6563d859904837790515d790ecadaa4f06064471.tar.bz2
rneovim-6563d859904837790515d790ecadaa4f06064471.zip
vim-patch:7.4.2104
Problem: Code duplication when unreferencing a function. Solution: De-duplicate. https://github.com/vim/vim/commit/97baee80f0906ee2f651ee1215ec033e84f866ad
-rw-r--r--src/nvim/eval.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 0766fc8ee8..c3812f8e48 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -21960,11 +21960,12 @@ static void func_free(ufunc_T *fp)
*/
void func_unref(char_u *name)
{
- ufunc_T *fp;
+ ufunc_T *fp = NULL;
if (name == NULL) {
return;
- } else if (isdigit(*name)) {
+ }
+ if (isdigit(*name)) {
fp = find_func(name);
if (fp == NULL) {
#ifdef EXITFREE
@@ -21980,12 +21981,12 @@ void func_unref(char_u *name)
} else if (STRNCMP(name, "<lambda>", 8) == 0) {
// fail silently, when lambda function isn't found
fp = find_func(name);
- if (fp != NULL && --fp->uf_refcount <= 0) {
- // Only delete it when it's not being used. Otherwise it's done
- // when "uf_calls" becomes zero.
- if (fp->uf_calls == 0) {
- func_free(fp);
- }
+ }
+ if (fp != NULL && --fp->uf_refcount <= 0) {
+ // Only delete it when it's not being used. Otherwise it's done
+ // when "uf_calls" becomes zero.
+ if (fp->uf_calls == 0) {
+ func_free(fp);
}
}
}