changeset 25262:e9065d299e9b

patch 8.2.3167: get E12 in a job callback when searching for tags Commit: https://github.com/vim/vim/commit/547f94f33098b060da9d62c29d9fcbe9bf1e2b11 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jul 15 18:14:56 2021 +0200 patch 8.2.3167: get E12 in a job callback when searching for tags Problem: Get E12 in a job callback when searching for tags. (Andy Stewart) Solution: Use the sandbox only for executing a command, not for searching. (closes #8511)
author Bram Moolenaar <Bram@vim.org>
date Thu, 15 Jul 2021 18:15:04 +0200
parents 34254b70c785
children 5861cc1f5704
files src/tag.c src/version.c
diffstat 2 files changed, 18 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/tag.c
+++ b/src/tag.c
@@ -3312,7 +3312,6 @@ jumpto_tag(
     int		forceit,	// :ta with !
     int		keep_help)	// keep help flag (FALSE for cscope)
 {
-    int		save_secure;
     optmagic_T	save_magic_overruled;
     int		save_p_ws, save_p_scs, save_p_ic;
     linenr_T	save_lnum;
@@ -3500,11 +3499,6 @@ jumpto_tag(
 	curwin->w_set_curswant = TRUE;
 	postponed_split = 0;
 
-	save_secure = secure;
-	secure = 1;
-#ifdef HAVE_SANDBOX
-	++sandbox;
-#endif
 	save_magic_overruled = magic_overruled;
 	magic_overruled = OPTION_MAGIC_OFF;	// always execute with 'nomagic'
 #ifdef FEAT_SEARCH_EXTRA
@@ -3621,22 +3615,28 @@ jumpto_tag(
 	}
 	else
 	{
+	    int		save_secure = secure;
+
+	    // Setup the sandbox for executing the command from the tags file.
+	    secure = 1;
+#ifdef HAVE_SANDBOX
+	    ++sandbox;
+#endif
 	    curwin->w_cursor.lnum = 1;		// start command in line 1
 	    do_cmdline_cmd(pbuf);
 	    retval = OK;
+
+	    // When the command has done something that is not allowed make
+	    // sure the error message can be seen.
+	    if (secure == 2)
+		wait_return(TRUE);
+	    secure = save_secure;
+#ifdef HAVE_SANDBOX
+	    --sandbox;
+#endif
 	}
 
-	/*
-	 * When the command has done something that is not allowed make sure
-	 * the error message can be seen.
-	 */
-	if (secure == 2)
-	    wait_return(TRUE);
-	secure = save_secure;
 	magic_overruled = save_magic_overruled;
-#ifdef HAVE_SANDBOX
-	--sandbox;
-#endif
 #ifdef FEAT_SEARCH_EXTRA
 	// restore no_hlsearch when keeping the old search pattern
 	if (search_options)
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3167,
+/**/
     3166,
 /**/
     3165,