summaryrefslogtreecommitdiffstats
path: root/src/arglist.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-02-03 21:23:29 +0100
committerBram Moolenaar <Bram@vim.org>2021-02-03 21:23:29 +0100
commit6bcb877ec19a647443195a54eeac60cb693fd827 (patch)
tree03771c400bda7fb02e8466d0a3f3a281d61a35a0 /src/arglist.c
parent2c363a2e95ee0b366e72063d093d20e025ef4a66 (diff)
patch 8.2.2463: using :arglocal in an autocommand may use freed memoryv8.2.2463
Problem: Using :arglocal in an autocommand may use freed memory. (houyunsong) Solution: Check if the arglist is locked.
Diffstat (limited to 'src/arglist.c')
-rw-r--r--src/arglist.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/arglist.c b/src/arglist.c
index 503cbd90df..79628fda62 100644
--- a/src/arglist.c
+++ b/src/arglist.c
@@ -557,6 +557,8 @@ ex_args(exarg_T *eap)
if (eap->cmdidx != CMD_args)
{
+ if (check_arglist_locked() == FAIL)
+ return;
alist_unlink(ALIST(curwin));
if (eap->cmdidx == CMD_argglobal)
ALIST(curwin) = &global_alist;
@@ -566,6 +568,8 @@ ex_args(exarg_T *eap)
if (*eap->arg != NUL)
{
+ if (check_arglist_locked() == FAIL)
+ return;
// ":args file ..": define new argument list, handle like ":next"
// Also for ":argslocal file .." and ":argsglobal file ..".
ex_next(eap);