]> granicus.if.org Git - vim/commitdiff
patch 8.2.3167: get E12 in a job callback when searching for tags v8.2.3167
authorBram Moolenaar <Bram@vim.org>
Thu, 15 Jul 2021 16:14:56 +0000 (18:14 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 15 Jul 2021 16:14:56 +0000 (18:14 +0200)
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)

src/tag.c
src/version.c

index 256f885c82c4fd895d7a19ca3544a91048a2f828..4e96e0d4303fc2b205c198c9abf7c2fb88ea7e55 100644 (file)
--- 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;
-       magic_overruled = save_magic_overruled;
+           // 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;
+           --sandbox;
 #endif
+       }
+
+       magic_overruled = save_magic_overruled;
 #ifdef FEAT_SEARCH_EXTRA
        // restore no_hlsearch when keeping the old search pattern
        if (search_options)
index 896ca07b8b9459996cb7dcb8353032246ff15c3a..6a4943d50f39e7a8fa531cda01b2613ef288bc31 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3167,
 /**/
     3166,
 /**/