Mercurial > vim
changeset 9709:cce76af1cc6a v7.4.2130
commit https://github.com/vim/vim/commit/623e263ffb998acacd6fd0de18c44e03af2a47d1
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jul 30 22:47:56 2016 +0200
patch 7.4.2130
Problem: Pending timers cause false memory leak reports.
Solution: Free all timers on exit.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 30 Jul 2016 23:00:05 +0200 |
parents | 09d6c236da35 |
children | d98b423c75cd |
files | src/ex_cmds2.c src/misc2.c src/proto/ex_cmds2.pro src/version.c |
diffstat | 4 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -1279,6 +1279,21 @@ set_ref_in_timer(int copyID) } return abort; } + +# if defined(EXITFREE) || defined(PROTO) + void +timer_free_all() +{ + timer_T *timer; + + while (first_timer != NULL) + { + timer = first_timer; + remove_timer(timer); + free_timer(timer); + } +} +# endif # endif #if defined(FEAT_SYN_HL) && defined(FEAT_RELTIME) && defined(FEAT_FLOAT)
--- a/src/misc2.c +++ b/src/misc2.c @@ -1224,6 +1224,9 @@ free_all_mem(void) channel_free_all(); job_free_all(); # endif +#ifdef FEAT_TIMERS + timer_free_all(); +#endif free_termoptions();
--- a/src/proto/ex_cmds2.pro +++ b/src/proto/ex_cmds2.pro @@ -18,11 +18,12 @@ float_T profile_float(proftime_T *tm); void profile_setlimit(long msec, proftime_T *tm); int profile_passed_limit(proftime_T *tm); void profile_zero(proftime_T *tm); -timer_T *create_timer(long msec, int repeats); +timer_T *create_timer(long msec, int repeat); long check_due_timer(void); timer_T *find_timer(int id); void stop_timer(timer_T *timer); int set_ref_in_timer(int copyID); +void timer_free_all(void); void profile_divide(proftime_T *tm, int count, proftime_T *tm2); void profile_add(proftime_T *tm, proftime_T *tm2); void profile_self(proftime_T *self, proftime_T *total, proftime_T *children);