Mercurial > vim
diff src/structs.h @ 9733:59565cdd7261 v7.4.2142
commit https://github.com/vim/vim/commit/8dd3a43d75550e9b5736066124c97697564f769e
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Aug 1 20:46:25 2016 +0200
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 01 Aug 2016 21:00:06 +0200 |
parents | 02ba9b2f80e8 |
children | 4cb5ab124239 |
line wrap: on
line diff
--- a/src/structs.h +++ b/src/structs.h @@ -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" */ }; /*