0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 7.4.2142

Problem:    Leaking memory when redefining a function.
Solution:   Don't increment the function reference count when it's found by
            name. Don't remove the wrong function from the hashtab.  More
            reference counting fixes.
This commit is contained in:
Bram Moolenaar
2016-08-01 20:46:25 +02:00
parent ba96e9af38
commit 8dd3a43d75
3 changed files with 66 additions and 44 deletions

View File

@@ -1327,7 +1327,7 @@ typedef struct
#endif
scid_T uf_script_ID; /* ID of script where function was defined,
used for s: variables */
int uf_refcount; /* for numbered function: reference count */
int uf_refcount; /* reference count, see func_name_refcount() */
funccall_T *uf_scoped; /* l: local variables for closure */
char_u uf_name[1]; /* name of function (actually longer); can
start with <SNR>123_ (<SNR> is K_SPECIAL
@@ -1365,9 +1365,11 @@ struct funccall_S
funccall_T *caller; /* calling function or NULL */
/* for closure */
int fc_refcount;
int fc_refcount; /* number of user functions that reference this
* funccal */
int fc_copyID; /* for garbage collection */
garray_T fc_funcs; /* list of ufunc_T* which refer this */
garray_T fc_funcs; /* list of ufunc_T* which keep a reference to
* "func" */
};
/*