changeset 13121:3321582cae78 v8.0.1435

patch 8.0.1435: memory leak in test_arabic commit https://github.com/vim/vim/commit/501383236d203bacad758e82e47a07b877a3b63b Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 28 17:05:16 2018 +0100 patch 8.0.1435: memory leak in test_arabic Problem: Memory leak in test_arabic. Solution: Free the from and to parts. (Christian Brabandt, closes https://github.com/vim/vim/issues/2569)
author Christian Brabandt <cb@256bit.org>
date Sun, 28 Jan 2018 17:15:05 +0100
parents 9a04f8e88adc
children 98e36d17f67d
files src/buffer.c src/digraph.c src/proto/digraph.pro src/version.c
diffstat 4 files changed, 17 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2212,6 +2212,7 @@ free_buf_options(
     clear_string_option(&buf->b_p_isk);
 #ifdef FEAT_KEYMAP
     clear_string_option(&buf->b_p_keymap);
+    keymap_clear(&buf->b_kmap_ga);
     ga_clear(&buf->b_kmap_ga);
 #endif
 #ifdef FEAT_COMMENTS
--- a/src/digraph.c
+++ b/src/digraph.c
@@ -2452,9 +2452,8 @@ keymap_unload(void)
     {
 	vim_snprintf((char *)buf, sizeof(buf), "<buffer> %s", kp[i].from);
 	(void)do_map(1, buf, LANGMAP, FALSE);
-	vim_free(kp[i].from);
-	vim_free(kp[i].to);
     }
+    keymap_clear(&curbuf->b_kmap_ga);
 
     p_cpo = save_cpo;
 
@@ -2463,4 +2462,16 @@ keymap_unload(void)
     status_redraw_curbuf();
 }
 
+    void
+keymap_clear(garray_T *kmap)
+{
+    int	    i;
+    kmap_T  *kp = (kmap_T *)kmap->ga_data;
+
+    for (i = 0; i < kmap->ga_len; ++i)
+    {
+	vim_free(kp[i].from);
+	vim_free(kp[i].to);
+    }
+}
 #endif /* FEAT_KEYMAP */
--- a/src/proto/digraph.pro
+++ b/src/proto/digraph.pro
@@ -6,4 +6,5 @@ void putdigraph(char_u *str);
 void listdigraphs(void);
 char_u *keymap_init(void);
 void ex_loadkeymap(exarg_T *eap);
+void keymap_clear(garray_T *kmap);
 /* vim: set ft=c : */
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1435,
+/**/
     1434,
 /**/
     1433,