diff options
author | Michael Ennen <mike.ennen@gmail.com> | 2016-12-15 22:30:05 -0700 |
---|---|---|
committer | Michael Ennen <mike.ennen@gmail.com> | 2017-02-14 17:38:17 -0700 |
commit | 6563d859904837790515d790ecadaa4f06064471 (patch) | |
tree | 67111e0ae7730037e5e68f8e3295b362f29f410c | |
parent | cbaa87a63912ea64a4c8027532b86114a6571a19 (diff) | |
download | rneovim-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.c | 17 |
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); } } } |