forked from aniani/vim
patch 8.2.3884: crash when clearing the argument list while using it
Problem: Crash when clearing the argument list while using it. Solution: Lock the argument list for ":all".
This commit is contained in:
@@ -910,6 +910,7 @@ do_arg_all(
|
|||||||
tabpage_T *old_curtab, *last_curtab;
|
tabpage_T *old_curtab, *last_curtab;
|
||||||
win_T *new_curwin = NULL;
|
win_T *new_curwin = NULL;
|
||||||
tabpage_T *new_curtab = NULL;
|
tabpage_T *new_curtab = NULL;
|
||||||
|
int prev_arglist_locked = arglist_locked;
|
||||||
|
|
||||||
#ifdef FEAT_CMDWIN
|
#ifdef FEAT_CMDWIN
|
||||||
if (cmdwin_type != 0)
|
if (cmdwin_type != 0)
|
||||||
@@ -936,6 +937,7 @@ do_arg_all(
|
|||||||
// watch out for its size to be changed.
|
// watch out for its size to be changed.
|
||||||
alist = curwin->w_alist;
|
alist = curwin->w_alist;
|
||||||
++alist->al_refcount;
|
++alist->al_refcount;
|
||||||
|
arglist_locked = TRUE;
|
||||||
|
|
||||||
old_curwin = curwin;
|
old_curwin = curwin;
|
||||||
old_curtab = curtab;
|
old_curtab = curtab;
|
||||||
@@ -1155,6 +1157,7 @@ do_arg_all(
|
|||||||
|
|
||||||
// Remove the "lock" on the argument list.
|
// Remove the "lock" on the argument list.
|
||||||
alist_unlink(alist);
|
alist_unlink(alist);
|
||||||
|
arglist_locked = prev_arglist_locked;
|
||||||
|
|
||||||
--autocmd_no_enter;
|
--autocmd_no_enter;
|
||||||
|
|
||||||
|
|||||||
@@ -583,4 +583,11 @@ func Test_all_not_allowed_from_cmdwin()
|
|||||||
au! BufEnter
|
au! BufEnter
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_clear_arglist_in_all()
|
||||||
|
n 0 00 000 0000 00000 000000
|
||||||
|
au! * 0 n 0
|
||||||
|
all
|
||||||
|
au! *
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
|||||||
@@ -749,6 +749,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 */
|
||||||
|
/**/
|
||||||
|
3884,
|
||||||
/**/
|
/**/
|
||||||
3883,
|
3883,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user