diff options
-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); } } } |