mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
patch 7.4.2160
Problem: setmatches() mixes up values. (Nikolai Pavlov) Solution: Save the string instead of reusing a shared buffer.
This commit is contained in:
@@ -418,6 +418,7 @@ dict_find(dict_T *d, char_u *key, int len)
|
||||
/*
|
||||
* Get a string item from a dictionary.
|
||||
* When "save" is TRUE allocate memory for it.
|
||||
* When FALSE a shared buffer is used, can only be used once!
|
||||
* Returns NULL if the entry doesn't exist or out of memory.
|
||||
*/
|
||||
char_u *
|
||||
|
@@ -9659,11 +9659,11 @@ f_setmatches(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ f_setmatches(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
|
||||
list_unref(s);
|
||||
s = NULL;
|
||||
}
|
||||
vim_free(group);
|
||||
vim_free(conceal);
|
||||
|
||||
li = li->li_next;
|
||||
}
|
||||
|
@@ -194,3 +194,12 @@ func Test_funcref()
|
||||
let OneByRef = funcref('One')
|
||||
call assert_equal(2, OneByRef())
|
||||
endfunc
|
||||
|
||||
func Test_setmatches()
|
||||
hi def link 1 Comment
|
||||
hi def link 2 PreProc
|
||||
let set = [{"group": 1, "pattern": 2, "id": 3, "priority": 4, "conceal": 5}]
|
||||
let exp = [{"group": '1', "pattern": '2', "id": 3, "priority": 4, "conceal": '5'}]
|
||||
call setmatches(set)
|
||||
call assert_equal(exp, getmatches())
|
||||
endfunc
|
||||
|
@@ -763,6 +763,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2160,
|
||||
/**/
|
||||
2159,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user