summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-09-28 22:26:54 +0200
committerBram Moolenaar <Bram@vim.org>2018-09-28 22:26:54 +0200
commit95892c27b242cdbc78e622c7a861a4e15aec7a30 (patch)
tree12b787a31c0d131fc1fb75b7b5ebdecc00c04e41
parentee91c33570008aefd2d62b8f88b22db751acacbe (diff)
downloadvim-git-8.1.0437.tar.gz
patch 8.1.0437: may access freed memory when syntax HL times outv8.1.0437
Problem: May access freed memory when syntax HL times out. (Philipp Gesang) Solution: Clear b_sst_first when clearing b_sst_array.
-rw-r--r--src/syntax.c6
-rw-r--r--src/version.c2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/syntax.c b/src/syntax.c
index 8fb4e20e5..e54ec9a82 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -1192,6 +1192,7 @@ syn_stack_free_block(synblock_T *block)
for (p = block->b_sst_first; p != NULL; p = p->sst_next)
clear_syn_state(p);
VIM_CLEAR(block->b_sst_array);
+ block->b_sst_first = NULL;
block->b_sst_len = 0;
}
}
@@ -1323,9 +1324,6 @@ syn_stack_apply_changes_block(synblock_T *block, buf_T *buf)
synstate_T *p, *prev, *np;
linenr_T n;
- if (block->b_sst_array == NULL) /* nothing to do */
- return;
-
prev = NULL;
for (p = block->b_sst_first; p != NULL; )
{
@@ -1378,7 +1376,7 @@ syn_stack_cleanup(void)
int dist;
int retval = FALSE;
- if (syn_block->b_sst_array == NULL || syn_block->b_sst_first == NULL)
+ if (syn_block->b_sst_first == NULL)
return retval;
/* Compute normal distance between non-displayed entries. */
diff --git a/src/version.c b/src/version.c
index 7f21f2d80..55d3d8013 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 437,
+/**/
436,
/**/
435,