mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
patch 8.2.4762: using freed memory using synstack() and synID() in WinEnter
Problem: Using freed memory when using synstack() and synID() in WinEnter. Solution: Check using the syntax window. (closes #10204)
This commit is contained in:
parent
e0805b849c
commit
ca7e86c237
@ -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);
|
||||
|
@ -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
|
||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4762,
|
||||
/**/
|
||||
4761,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user