0fdb618
To: vim-dev@vim.org
0fdb618
Subject: Patch 7.1.186
0fdb618
Fcc: outbox
0fdb618
From: Bram Moolenaar <Bram@moolenaar.net>
0fdb618
Mime-Version: 1.0
0fdb618
Content-Type: text/plain; charset=ISO-8859-1
0fdb618
Content-Transfer-Encoding: 8bit
0fdb618
------------
0fdb618
0fdb618
Patch 7.1.186
0fdb618
Problem:    "expand('<afile>')" returns a bogus value after changing
0fdb618
	    directory. (Dave Fishburn)
0fdb618
Solution:   Copy "autocmd_fname" to allocated memory and expand to full
0fdb618
	    filename.  Shorten the path when expanding <afile>.
0fdb618
Files:	    src/ex_docmd.c, src/fileio.c
0fdb618
0fdb618
0fdb618
*** ../vim-7.1.185/src/ex_docmd.c	Wed Jan  2 15:12:29 2008
0fdb618
--- src/ex_docmd.c	Wed Jan  2 20:12:33 2008
0fdb618
***************
0fdb618
*** 7799,7804 ****
0fdb618
--- 7799,7805 ----
0fdb618
  free_cd_dir()
0fdb618
  {
0fdb618
      vim_free(prev_dir);
0fdb618
+     prev_dir = NULL;
0fdb618
  }
0fdb618
  #endif
0fdb618
  
0fdb618
***************
0fdb618
*** 9521,9526 ****
0fdb618
--- 9522,9528 ----
0fdb618
  		    *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"<afile>\"");
0fdb618
  		    return NULL;
0fdb618
  		}
0fdb618
+ 		result = shorten_fname1(result);
0fdb618
  		break;
0fdb618
  
0fdb618
  	case SPEC_ABUF:		/* buffer number for autocommand */
0fdb618
*** ../vim-7.1.185/src/fileio.c	Thu Nov  8 20:47:34 2007
0fdb618
--- src/fileio.c	Wed Jan  2 20:21:43 2008
0fdb618
***************
0fdb618
*** 5556,5562 ****
0fdb618
  #endif
0fdb618
  
0fdb618
  #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \
0fdb618
!     defined(FEAT_QUICKFIX) || defined(PROTO)
0fdb618
  /*
0fdb618
   * Try to find a shortname by comparing the fullname with the current
0fdb618
   * directory.
0fdb618
--- 5556,5562 ----
0fdb618
  #endif
0fdb618
  
0fdb618
  #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \
0fdb618
!     defined(FEAT_QUICKFIX) || defined(FEAT_AUTOCMD) || defined(PROTO)
0fdb618
  /*
0fdb618
   * Try to find a shortname by comparing the fullname with the current
0fdb618
   * directory.
0fdb618
***************
0fdb618
*** 8546,8551 ****
0fdb618
--- 8546,8553 ----
0fdb618
  
0fdb618
      /*
0fdb618
       * Set the file name to be used for <afile>.
0fdb618
+      * Make a copy to avoid that changing a buffer name or directory makes it
0fdb618
+      * invalid.
0fdb618
       */
0fdb618
      if (fname_io == NULL)
0fdb618
      {
0fdb618
***************
0fdb618
*** 8558,8563 ****
0fdb618
--- 8560,8567 ----
0fdb618
      }
0fdb618
      else
0fdb618
  	autocmd_fname = fname_io;
0fdb618
+     if (autocmd_fname != NULL)
0fdb618
+ 	autocmd_fname = FullName_save(autocmd_fname, FALSE);
0fdb618
  
0fdb618
      /*
0fdb618
       * Set the buffer number to be used for <abuf>.
0fdb618
***************
0fdb618
*** 8740,8745 ****
0fdb618
--- 8744,8750 ----
0fdb618
      vim_free(sourcing_name);
0fdb618
      sourcing_name = save_sourcing_name;
0fdb618
      sourcing_lnum = save_sourcing_lnum;
0fdb618
+     vim_free(autocmd_fname);
0fdb618
      autocmd_fname = save_autocmd_fname;
0fdb618
      autocmd_bufnr = save_autocmd_bufnr;
0fdb618
      autocmd_match = save_autocmd_match;
0fdb618
*** ../vim-7.1.185/src/version.c	Wed Jan  2 17:48:24 2008
0fdb618
--- src/version.c	Wed Jan  2 21:06:35 2008
0fdb618
***************
0fdb618
*** 668,669 ****
0fdb618
--- 668,671 ----
0fdb618
  {   /* Add new patch number below this line */
0fdb618
+ /**/
0fdb618
+     186,
0fdb618
  /**/
0fdb618
0fdb618
-- 
0fdb618
   LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and
0fdb618
   hacks him to the floor.  Blood.  Swashbuckling music (perhaps).
0fdb618
   LAUNCELOT races through into the castle screaming.
0fdb618
SECOND SENTRY: Hey!
0fdb618
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
0fdb618
0fdb618
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
0fdb618
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
0fdb618
\\\        download, build and distribute -- http://www.A-A-P.org        ///
0fdb618
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///