forked from aniani/vim
updated for version 7.4.051
Problem: Syntax highlighting a Yaml file causes a crash. (Blake Preston) Solution: Copy the pim structure before calling addstate() to avoid it becoming invalide when the state list is reallocated.
This commit is contained in:
@@ -6458,6 +6458,7 @@ nfa_regmatch(prog, start, submatch, m)
|
|||||||
if (add_state != NULL)
|
if (add_state != NULL)
|
||||||
{
|
{
|
||||||
nfa_pim_T *pim;
|
nfa_pim_T *pim;
|
||||||
|
nfa_pim_T pim_copy;
|
||||||
|
|
||||||
if (t->pim.result == NFA_PIM_UNUSED)
|
if (t->pim.result == NFA_PIM_UNUSED)
|
||||||
pim = NULL;
|
pim = NULL;
|
||||||
@@ -6531,6 +6532,15 @@ nfa_regmatch(prog, start, submatch, m)
|
|||||||
pim = NULL;
|
pim = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If "pim" points into l->t it will become invalid when
|
||||||
|
* adding the state causes the list to be reallocated. Make a
|
||||||
|
* local copy to avoid that. */
|
||||||
|
if (pim == &t->pim)
|
||||||
|
{
|
||||||
|
copy_pim(&pim_copy, pim);
|
||||||
|
pim = &pim_copy;
|
||||||
|
}
|
||||||
|
|
||||||
if (add_here)
|
if (add_here)
|
||||||
addstate_here(thislist, add_state, &t->subs, pim, &listidx);
|
addstate_here(thislist, add_state, &t->subs, pim, &listidx);
|
||||||
else
|
else
|
||||||
|
@@ -738,6 +738,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
51,
|
||||||
/**/
|
/**/
|
||||||
50,
|
50,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user