Skip to content

Commit

Permalink
patch 8.2.4762: using freed memory using synstack() and synID() in Wi…
Browse files Browse the repository at this point in the history
…nEnter

Problem:    Using freed memory when using synstack() and synID() in WinEnter.
Solution:   Check using the syntax window. (closes #10204)
  • Loading branch information
zeertzjq authored and brammool committed Apr 16, 2022
1 parent e0805b8 commit ca7e86c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/syntax.c
Expand Up @@ -6486,8 +6486,9 @@ syn_get_id(
int keep_state) // keep state of char at "col"
{
// When the position is not after the current position and in the same
// line of the same buffer, need to restart parsing.
if (wp->w_buffer != syn_buf
// line of the same window with the same buffer, need to restart parsing.
if (wp != syn_win
|| wp->w_buffer != syn_buf
|| lnum != current_lnum
|| col < current_col)
syntax_start(wp, lnum);
Expand Down
13 changes: 13 additions & 0 deletions src/testdir/test_syntax.vim
Expand Up @@ -956,5 +956,18 @@ func Test_syn_include_contains_TOP()
bw!
endfunc

" This was using freed memory
func Test_WinEnter_synstack_synID()
autocmd WinEnter * call synstack(line("."), col("."))
autocmd WinEnter * call synID(line('.'), col('.') - 1, 1)
call setline(1, 'aaaaa')
normal! $
new
close

au! WinEnter
bw!
endfunc


" vim: shiftwidth=2 sts=2 expandtab
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -746,6 +746,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4762,
/**/
4761,
/**/
Expand Down

0 comments on commit ca7e86c

Please sign in to comment.