From 623e263ffb998acacd6fd0de18c44e03af2a47d1 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 30 Jul 2016 22:47:56 +0200 Subject: patch 7.4.2130 Problem: Pending timers cause false memory leak reports. Solution: Free all timers on exit. --- src/ex_cmds2.c | 15 +++++++++++++++ src/misc2.c | 3 +++ src/proto/ex_cmds2.pro | 3 ++- src/version.c | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) 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 @@ -763,6 +763,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2130, /**/ 2129, /**/ -- cgit v1.2.1