mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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 #2462)
This commit is contained in:
parent
2efb323e87
commit
1223744849
@ -5486,6 +5486,16 @@ set_ref_in_quickfix(int copyID)
|
|||||||
if (abort)
|
if (abort)
|
||||||
return abort;
|
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;
|
return abort;
|
||||||
|
@ -3017,3 +3017,17 @@ func Test_qf_tick()
|
|||||||
call Xqftick_tests('c')
|
call Xqftick_tests('c')
|
||||||
call Xqftick_tests('l')
|
call Xqftick_tests('l')
|
||||||
endfunc
|
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
|
||||||
|
|
||||||
|
@ -771,6 +771,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 */
|
||||||
|
/**/
|
||||||
|
1412,
|
||||||
/**/
|
/**/
|
||||||
1411,
|
1411,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user