# HG changeset patch # User Christian Brabandt # Date 1469912405 -7200 # Node ID cce76af1cc6a178010301171fcb32aa3d622a98c # Parent 09d6c236da35219340434283eb79a58d0af5391c commit https://github.com/vim/vim/commit/623e263ffb998acacd6fd0de18c44e03af2a47d1 Author: Bram Moolenaar 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. diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c --- 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) diff --git a/src/misc2.c b/src/misc2.c --- 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(); diff --git a/src/proto/ex_cmds2.pro b/src/proto/ex_cmds2.pro --- 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); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2130, +/**/ 2129, /**/ 2128,