From 9e33efd1523b85a70533930dd43a26925a2b648c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 9 Feb 2018 17:50:28 +0100 Subject: patch 8.0.1485: weird autocmd may cause arglist to be changed recursively Problem: Weird autocmd may cause arglist to be changed recursively. Solution: Prevent recursively changing the argument list. (Christian Brabandt, closes #2472) --- src/ex_docmd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/ex_docmd.c') diff --git a/src/ex_docmd.c b/src/ex_docmd.c index cd915c9da..591775f4c 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8058,6 +8058,16 @@ alist_set( int fnum_len) { int i; + static int recursive = 0; + + if (recursive) + { +#ifdef FEAT_AUTOCMD + EMSG(_(e_au_recursive)); +#endif + return; + } + ++recursive; alist_clear(al); if (ga_grow(&al->al_ga, count) == OK) @@ -8087,6 +8097,8 @@ alist_set( FreeWild(count, files); if (al == &global_alist) arg_had_last = FALSE; + + --recursive; } /* -- cgit v1.2.1