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);
--- 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,