patch 7.4.2160
Problem: setmatches() mixes up values. (Nikolai Pavlov)
Solution: Save the string instead of reusing a shared buffer.
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 0095661..dc0e630 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -9659,11 +9659,11 @@
}
}
- group = get_dict_string(d, (char_u *)"group", FALSE);
+ group = get_dict_string(d, (char_u *)"group", TRUE);
priority = (int)get_dict_number(d, (char_u *)"priority");
id = (int)get_dict_number(d, (char_u *)"id");
conceal = dict_find(d, (char_u *)"conceal", -1) != NULL
- ? get_dict_string(d, (char_u *)"conceal", FALSE)
+ ? get_dict_string(d, (char_u *)"conceal", TRUE)
: NULL;
if (i == 0)
{
@@ -9677,6 +9677,8 @@
list_unref(s);
s = NULL;
}
+ vim_free(group);
+ vim_free(conceal);
li = li->li_next;
}