changeset 9655:f1920505bc16 v7.4.2104

commit https://github.com/vim/vim/commit/97baee80f0906ee2f651ee1215ec033e84f866ad Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jul 26 20:46:08 2016 +0200 patch 7.4.2104 Problem: Code duplication when unreferencing a function. Solution: De-duplicate.
author Christian Brabandt <cb@256bit.org>
date Tue, 26 Jul 2016 21:00:08 +0200
parents 9335bbb35ee8
children 01655dbbe65a
files src/userfunc.c src/version.c
diffstat 2 files changed, 11 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2640,11 +2640,11 @@ ex_delfunction(exarg_T *eap)
     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)
@@ -2654,25 +2654,18 @@ func_unref(char_u *name)
 #endif
 		EMSG2(_(e_intern2), "func_unref()");
 	}
-	else if (--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);
-	}
     }
     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);
     }
 }
 
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2104,
+/**/
     2103,
 /**/
     2102,