Permalink
Browse files

patch 7.4.2139

Problem:    :delfunction causes illegal memory access.
Solution:   Correct logic when deciding to free a function.
  • Loading branch information...
1 parent 2d3d60a commit 0588d4f9d2741f35a271400a37fddbdd72d84219 @brammool brammool committed Aug 1, 2016
Showing with 5 additions and 4 deletions.
  1. +2 −3 src/testdir/test_lambda.vim
  2. +1 −1 src/userfunc.c
  3. +2 −0 src/version.c
@@ -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
View
@@ -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. */
View
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2139,
+/**/
2138,
/**/
2137,

0 comments on commit 0588d4f

Please sign in to comment.