changeset 9727:8436bb5134f5 v7.4.2139

commit https://github.com/vim/vim/commit/0588d4f9d2741f35a271400a37fddbdd72d84219 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 1 16:29:47 2016 +0200 patch 7.4.2139 Problem: :delfunction causes illegal memory access. Solution: Correct logic when deciding to free a function.
author Christian Brabandt <cb@256bit.org>
date Mon, 01 Aug 2016 16:30:07 +0200
parents 45d404749bb0
children 6ed73116052c
files src/testdir/test_lambda.vim src/userfunc.c src/version.c
diffstat 3 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_lambda.vim
+++ b/src/testdir/test_lambda.vim
@@ -267,7 +267,6 @@ func Test_closure_refcount()
   call assert_equal(2, g:Count())
   call assert_equal(3, g:Count2())
 
-  " This causes memory access errors.
-  " delfunc LambdaFoo
-  " delfunc LambdaBar
+  delfunc LambdaFoo
+  delfunc LambdaBar
 endfunc
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2711,7 +2711,7 @@ ex_delfunction(exarg_T *eap)
 	     * Numbered functions and lambdas snould be kept if the refcount is
 	     * one or more. */
 	    if (fp->uf_refcount > (isdigit(fp->uf_name[0])
-					     || fp->uf_name[0] == '<') ? 0 : 1)
+					     || fp->uf_name[0] == '<' ? 0 : 1))
 	    {
 		/* Function is still referenced somewhere.  Don't free it but
 		 * do remove it from the hashtable. */
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2139,
+/**/
     2138,
 /**/
     2137,