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(2, g:Count())
|
||||||
call assert_equal(3, g:Count2())
|
call assert_equal(3, g:Count2())
|
||||||
|
|
||||||
" This causes memory access errors.
|
delfunc LambdaFoo
|
||||||
" delfunc LambdaFoo
|
delfunc LambdaBar
|
||||||
" delfunc LambdaBar
|
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -2711,7 +2711,7 @@ ex_delfunction(exarg_T *eap)
|
|||||||
* Numbered functions and lambdas snould be kept if the refcount is
|
* Numbered functions and lambdas snould be kept if the refcount is
|
||||||
* one or more. */
|
* one or more. */
|
||||||
if (fp->uf_refcount > (isdigit(fp->uf_name[0])
|
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
|
/* Function is still referenced somewhere. Don't free it but
|
||||||
* do remove it from the hashtable. */
|
* do remove it from the hashtable. */
|
||||||
|
@@ -763,6 +763,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2139,
|
||||||
/**/
|
/**/
|
||||||
2138,
|
2138,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user