changeset 5584:c8c80c9d2e22 v7.4.139

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)
author Bram Moolenaar <bram@vim.org>
date Fri, 10 Jan 2014 15:53:13 +0100
parents b5fbe1605413
children 8ce54730f806
files src/ex_docmd.c src/version.c src/window.c
diffstat 3 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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,
--- 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++)