# HG changeset patch # User Bram Moolenaar # Date 1389365593 -3600 # Node ID c8c80c9d2e2237fedeadfb1c6856c53c7a5e90d2 # Parent b5fbe1605413ea9aa01859df4e1ba0b57ede3290 updated for version 7.4.139 Problem: Crash when using :cd in autocommand. (Fran?ois Ingelrest) Solution: Set w_localdir to NULL after freeing it. (Dominique Pelle) diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8228,6 +8228,7 @@ post_chdir(local) int local; { vim_free(curwin->w_localdir); + curwin->w_localdir = NULL; if (local) { /* If still in global directory, need to remember current @@ -8244,7 +8245,6 @@ post_chdir(local) * name. */ vim_free(globaldir); globaldir = NULL; - curwin->w_localdir = NULL; } shorten_fnames(TRUE); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 139, +/**/ 138, /**/ 137, diff --git a/src/window.c b/src/window.c --- a/src/window.c +++ b/src/window.c @@ -1216,8 +1216,8 @@ win_init(newp, oldp, flags) else copy_loclist(oldp, newp); #endif - if (oldp->w_localdir != NULL) - newp->w_localdir = vim_strsave(oldp->w_localdir); + newp->w_localdir = (oldp->w_localdir == NULL) + ? NULL : vim_strsave(oldp->w_localdir); /* copy tagstack and folds */ for (i = 0; i < oldp->w_tagstacklen; i++)