diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-30 22:47:56 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-30 22:47:56 +0200 |
commit | 623e263ffb998acacd6fd0de18c44e03af2a47d1 (patch) | |
tree | d9db8377e5c762b97f715af27f115445f3a999c7 | |
parent | 3ab14355ed93958433eec58e96ec9bd9a472f2b2 (diff) | |
download | vim-git-623e263ffb998acacd6fd0de18c44e03af2a47d1.tar.gz |
patch 7.4.2130v7.4.2130
Problem: Pending timers cause false memory leak reports.
Solution: Free all timers on exit.
-rw-r--r-- | src/ex_cmds2.c | 15 | ||||
-rw-r--r-- | src/misc2.c | 3 | ||||
-rw-r--r-- | src/proto/ex_cmds2.pro | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 22 insertions, 1 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index ec9f50a52..2cebbebca 100644 --- 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 index 281f4af1a..53469a261 100644 --- 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 index 8d9b72a24..c7a860b9f 100644 --- 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 index 90953555f..77a43c1be 100644 --- 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, |