Skip to content

Commit

Permalink
patch 8.2.4060: win_execute() slow on systems where getcwd()/chdir() …
Browse files Browse the repository at this point in the history
…is slow

Problem:    win_execute() is slow on systems where getcwd() or chdir() is
            slow. (Rick Howe)
Solution:   Avoid using getcwd() and chdir() if no local directory is used and
            'acd' is not set. (closes #9504)
  • Loading branch information
brammool committed Jan 11, 2022
1 parent 19db9e6 commit d6f27c6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
17 changes: 15 additions & 2 deletions src/evalwindow.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,13 +707,26 @@ f_win_execute(typval_T *argvars, typval_T *rettv)
{
pos_T curpos = wp->w_cursor;
char_u cwd[MAXPATHL];
int cwd_status;
int cwd_status = FAIL;
#ifdef FEAT_AUTOCHDIR
char_u autocwd[MAXPATHL];
int apply_acd = FALSE;
#endif

cwd_status = mch_dirname(cwd, MAXPATHL);
// Getting and setting directory can be slow on some systems, only do
// this when the current or target window/tab have a local directory or
// 'acd' is set.
if (curwin != wp
&& (curwin->w_localdir != NULL
|| wp->w_localdir != NULL
|| (curtab != tp
&& (curtab->tp_localdir != NULL
|| tp->tp_localdir != NULL))
#ifdef FEAT_AUTOCHDIR
|| p_acd
#endif
))
cwd_status = mch_dirname(cwd, MAXPATHL);

#ifdef FEAT_AUTOCHDIR
// If 'acd' is set, check we are using that directory. If yes, then
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4060,
/**/
4059,
/**/
Expand Down

0 comments on commit d6f27c6

Please sign in to comment.