summaryrefslogtreecommitdiff
path: root/src/structs.h
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-01 20:46:25 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-01 20:46:25 +0200
commit8dd3a43d75550e9b5736066124c97697564f769e (patch)
tree5768a06605c7ffaacfbb8aa385060cc7be223fec /src/structs.h
parentba96e9af388804364425185b47eed14988302865 (diff)
downloadvim-git-8dd3a43d75550e9b5736066124c97697564f769e.tar.gz
patch 7.4.2142v7.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.
Diffstat (limited to 'src/structs.h')
-rw-r--r--src/structs.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/structs.h b/src/structs.h
index a8b85f479..543974828 100644
--- 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" */
};
/*