]> granicus.if.org Git - vim/commitdiff
patch 8.0.1435: memory leak in test_arabic v8.0.1435
authorBram Moolenaar <Bram@vim.org>
Sun, 28 Jan 2018 16:05:16 +0000 (17:05 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 28 Jan 2018 16:05:16 +0000 (17:05 +0100)
Problem:    Memory leak in test_arabic.
Solution:   Free the from and to parts. (Christian Brabandt, closes #2569)

src/buffer.c
src/digraph.c
src/proto/digraph.pro
src/version.c

index eeba5301255c449dfb1b69279895382f973ae0b9..ecd8f4eb65e54107987aace1737328a96f67c255 100644 (file)
@@ -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
index 6b5a5aac2541c662418f2423f55b42759dc488bd..2c7ba9f0c6439d76c59163b28b36f4d54aa01236 100644 (file)
@@ -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 */
index a8d2ae903c41dd851d70c1759985134a83e3138c..3cb7dceb269fb1c008438b48d8aa30d5855d3602 100644 (file)
@@ -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 : */
index bace9d3c6448dbea3fd87bbec42abc637a55fff6..6fe422d17e7fa5a93e30702eb84c19e9fad9739e 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1435,
 /**/
     1434,
 /**/