mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.0.1412: using free memory using setloclist()
Problem: Using free memory using setloclist(). (Dominique Pelle)
Solution: Mark location list context as still in use when needed. (Yegappan
Lakshmanan, closes vim/vim#2462)
1223744849
This commit is contained in:
parent
773c488140
commit
427140048b
@ -5166,6 +5166,16 @@ bool set_ref_in_quickfix(int copyID)
|
||||
return abort;
|
||||
}
|
||||
}
|
||||
|
||||
if (IS_LL_WINDOW(win) && (win->w_llist_ref->qf_refcount == 1)) {
|
||||
// In a location list window and none of the other windows is
|
||||
// referring to this location list. Mark the location list
|
||||
// context as still in use.
|
||||
abort = mark_quickfix_ctx(win->w_llist_ref, copyID);
|
||||
if (abort) {
|
||||
return abort;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return abort;
|
||||
|
@ -3298,3 +3298,17 @@ func Test_qfjump()
|
||||
call Xqfjump_tests('c')
|
||||
call Xqfjump_tests('l')
|
||||
endfunc
|
||||
|
||||
" The following test used to crash Vim.
|
||||
" Open the location list window and close the regular window associated with
|
||||
" the location list. When the garbage collection runs now, it incorrectly
|
||||
" marks the location list context as not in use and frees the context.
|
||||
func Test_ll_window_ctx()
|
||||
call setloclist(0, [], 'f')
|
||||
call setloclist(0, [], 'a', {'context' : []})
|
||||
lopen | only
|
||||
call test_garbagecollect_now()
|
||||
echo getloclist(0, {'context' : 1}).context
|
||||
enew | only
|
||||
endfunc
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user