diff src/vim9compile.c @ 26358:80b555c4aed0 v8.2.3710

patch 8.2.3710: Vim9: backtick expression expanded for :global Commit: https://github.com/vim/vim/commit/3d2e031d4f0e1559e4a4f99de5eb2330f38f8eb5 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Dec 1 09:27:20 2021 +0000 patch 8.2.3710: Vim9: backtick expression expanded for :global Problem: Vim9: backtick expression expanded for :global. Solution: Check the following command.
author Bram Moolenaar <Bram@vim.org>
date Wed, 01 Dec 2021 10:30:06 +0100
parents 0884f2be6c2a
children a5dac0a9aa5f
line wrap: on
line diff
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -9070,6 +9070,7 @@ compile_exec(char_u *line_arg, exarg_T *
     int		has_expr = FALSE;
     char_u	*nextcmd = (char_u *)"";
     char_u	*tofree = NULL;
+    char_u	*cmd_arg = NULL;
 
     if (cctx->ctx_skip == SKIP_YES)
 	goto theend;
@@ -9172,20 +9173,20 @@ compile_exec(char_u *line_arg, exarg_T *
 
 	p = skip_regexp_ex(eap->arg + 1, delim, TRUE, NULL, NULL, NULL);
 	if (*p == delim)
-	{
-	    eap->arg = p + 1;
-	    has_expr = TRUE;
-	}
+	    cmd_arg = p + 1;
     }
 
     if (eap->cmdidx == CMD_folddoopen || eap->cmdidx == CMD_folddoclosed)
+	cmd_arg = eap->arg;
+
+    if (cmd_arg != NULL)
     {
 	exarg_T nea;
 
 	CLEAR_FIELD(nea);
-	nea.cmd = eap->arg;
+	nea.cmd = cmd_arg;
 	p = find_ex_command(&nea, NULL, lookup_scriptitem, NULL);
-	if (nea.cmdidx <= CMD_SIZE)
+	if (nea.cmdidx < CMD_SIZE)
 	{
 	    has_expr = excmd_get_argt(nea.cmdidx) & (EX_XFILE | EX_EXPAND);
 	    if (has_expr)