forked from aniani/vim
patch 7.4.2139
Problem: :delfunction causes illegal memory access. Solution: Correct logic when deciding to free a function.
This commit is contained in:
@@ -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
|
||||
|
@@ -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. */
|
||||
|
@@ -763,6 +763,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2139,
|
||||
/**/
|
||||
2138,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user