0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
Bram Moolenaar 2021-07-15 18:14:56 +02:00
parent b5841b99e6
commit 547f94f330
2 changed files with 18 additions and 16 deletions

View File

@ -3312,7 +3312,6 @@ jumpto_tag(
int forceit, // :ta with ! int forceit, // :ta with !
int keep_help) // keep help flag (FALSE for cscope) int keep_help) // keep help flag (FALSE for cscope)
{ {
int save_secure;
optmagic_T save_magic_overruled; optmagic_T save_magic_overruled;
int save_p_ws, save_p_scs, save_p_ic; int save_p_ws, save_p_scs, save_p_ic;
linenr_T save_lnum; linenr_T save_lnum;
@ -3500,11 +3499,6 @@ jumpto_tag(
curwin->w_set_curswant = TRUE; curwin->w_set_curswant = TRUE;
postponed_split = 0; postponed_split = 0;
save_secure = secure;
secure = 1;
#ifdef HAVE_SANDBOX
++sandbox;
#endif
save_magic_overruled = magic_overruled; save_magic_overruled = magic_overruled;
magic_overruled = OPTION_MAGIC_OFF; // always execute with 'nomagic' magic_overruled = OPTION_MAGIC_OFF; // always execute with 'nomagic'
#ifdef FEAT_SEARCH_EXTRA #ifdef FEAT_SEARCH_EXTRA
@ -3621,22 +3615,28 @@ jumpto_tag(
} }
else 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 curwin->w_cursor.lnum = 1; // start command in line 1
do_cmdline_cmd(pbuf); do_cmdline_cmd(pbuf);
retval = OK; retval = OK;
}
/* // When the command has done something that is not allowed make
* When the command has done something that is not allowed make sure // sure the error message can be seen.
* the error message can be seen.
*/
if (secure == 2) if (secure == 2)
wait_return(TRUE); wait_return(TRUE);
secure = save_secure; secure = save_secure;
magic_overruled = save_magic_overruled;
#ifdef HAVE_SANDBOX #ifdef HAVE_SANDBOX
--sandbox; --sandbox;
#endif #endif
}
magic_overruled = save_magic_overruled;
#ifdef FEAT_SEARCH_EXTRA #ifdef FEAT_SEARCH_EXTRA
// restore no_hlsearch when keeping the old search pattern // restore no_hlsearch when keeping the old search pattern
if (search_options) if (search_options)

View File

@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
3167,
/**/ /**/
3166, 3166,
/**/ /**/