summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-01-28 17:05:16 +0100
committerBram Moolenaar <Bram@vim.org>2018-01-28 17:05:16 +0100
commit501383236d203bacad758e82e47a07b877a3b63b (patch)
treec96e0fee728c53368526301c823b5845c2412e99
parentd7823d5b7c32f73ca720373ea9c16b1b47f086df (diff)
patch 8.0.1435: memory leak in test_arabicv8.0.1435
Problem: Memory leak in test_arabic. Solution: Free the from and to parts. (Christian Brabandt, closes #2569)
-rw-r--r--src/buffer.c1
-rw-r--r--src/digraph.c15
-rw-r--r--src/proto/digraph.pro1
-rw-r--r--src/version.c2
4 files changed, 17 insertions, 2 deletions
diff --git a/src/buffer.c b/src/buffer.c
index eeba530125..ecd8f4eb65 100644
--- 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
diff --git a/src/digraph.c b/src/digraph.c
index 6b5a5aac25..2c7ba9f0c6 100644
--- 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 */
diff --git a/src/proto/digraph.pro b/src/proto/digraph.pro
index a8d2ae903c..3cb7dceb26 100644
--- 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 : */
diff --git a/src/version.c b/src/version.c
index bace9d3c64..6fe422d17e 100644
--- 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,