From: Bram Moolenaar <Bram@vim.org> Date: Fri, 2 Aug 2013 15:08:13 +0000 (+0200) Subject: updated for version 7.4b.008 X-Git-Tag: v7.4b.008 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4008f4fb08f969c87e8f13bd9e019790757e08ad;p=vim updated for version 7.4b.008 Problem: 'autochdir' causes setbufvar() to change the current directory. (Ben Fritz) Solution: When disabling autocommands also reset 'acd' temporarily. (Christian Brabandt) --- diff --git a/src/fileio.c b/src/fileio.c index 731a7b183..20f082b22 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -8861,6 +8861,7 @@ aucmd_prepbuf(aco, buf) #ifdef FEAT_WINDOWS int save_ea; #endif + int save_acd; /* Find a window that is for the new buffer */ if (buf == curbuf) /* be quick when buf is curbuf */ @@ -8909,11 +8910,10 @@ aucmd_prepbuf(aco, buf) aucmd_win->w_s = &buf->b_s; ++buf->b_nwindows; win_init_empty(aucmd_win); /* set cursor and topline to safe values */ - vim_free(aucmd_win->w_localdir); - aucmd_win->w_localdir = NULL; /* Make sure w_localdir and globaldir are NULL to avoid a chdir() in * win_enter_ext(). */ + vim_free(aucmd_win->w_localdir); aucmd_win->w_localdir = NULL; aco->globaldir = globaldir; globaldir = NULL; @@ -8926,9 +8926,15 @@ aucmd_prepbuf(aco, buf) make_snapshot(SNAP_AUCMD_IDX); save_ea = p_ea; p_ea = FALSE; + + /* Prevent chdir() call in win_enter_ext(), through do_autochdir(). */ + save_acd = p_acd; + p_acd = FALSE; + (void)win_split_ins(0, WSP_TOP, aucmd_win, 0); (void)win_comp_pos(); /* recompute window positions */ p_ea = save_ea; + p_acd = save_acd; unblock_autocmds(); #endif curwin = aucmd_win; diff --git a/src/version.c b/src/version.c index d34ed63dd..22fc9b961 100644 --- a/src/version.c +++ b/src/version.c @@ -727,6 +727,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 8, /**/ 7, /**/