summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.281
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.281')
-rw-r--r--source/ap/vim/patches/7.3.281134
1 files changed, 134 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.281 b/source/ap/vim/patches/7.3.281
new file mode 100644
index 000000000..f90e95e13
--- /dev/null
+++ b/source/ap/vim/patches/7.3.281
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.281
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.281
+Problem: After using "expand('%:8')" the buffer name is changed.
+Solution: Make a copy of the file name before shortening it.
+Files: src/eval.c
+
+
+*** ../vim-7.3.280/src/eval.c 2011-08-10 12:38:02.000000000 +0200
+--- src/eval.c 2011-08-17 15:12:39.000000000 +0200
+***************
+*** 23205,23210 ****
+--- 23205,23211 ----
+ int c;
+ int has_fullname = 0;
+ #ifdef WIN3264
++ char_u *fname_start = *fnamep;
+ int has_shortname = 0;
+ #endif
+
+***************
+*** 23379,23402 ****
+ }
+
+ #ifdef WIN3264
+! /* Check shortname after we have done 'heads' and before we do 'tails'
+ */
+ if (has_shortname)
+ {
+! pbuf = NULL;
+! /* Copy the string if it is shortened by :h */
+! if (*fnamelen < (int)STRLEN(*fnamep))
+ {
+ p = vim_strnsave(*fnamep, *fnamelen);
+! if (p == 0)
+ return -1;
+ vim_free(*bufp);
+ *bufp = *fnamep = p;
+ }
+
+ /* Split into two implementations - makes it easier. First is where
+! * there isn't a full name already, second is where there is.
+! */
+ if (!has_fullname && !vim_isAbsName(*fnamep))
+ {
+ if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
+--- 23380,23404 ----
+ }
+
+ #ifdef WIN3264
+! /*
+! * Handle ":8" after we have done 'heads' and before we do 'tails'.
+ */
+ if (has_shortname)
+ {
+! /* Copy the string if it is shortened by :h and when it wasn't copied
+! * yet, because we are going to change it in place. Avoids changing
+! * the buffer name for "%:8". */
+! if (*fnamelen < (int)STRLEN(*fnamep) || *fnamep == fname_start)
+ {
+ p = vim_strnsave(*fnamep, *fnamelen);
+! if (p == NULL)
+ return -1;
+ vim_free(*bufp);
+ *bufp = *fnamep = p;
+ }
+
+ /* Split into two implementations - makes it easier. First is where
+! * there isn't a full name already, second is where there is. */
+ if (!has_fullname && !vim_isAbsName(*fnamep))
+ {
+ if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
+***************
+*** 23404,23421 ****
+ }
+ else
+ {
+! int l;
+
+! /* Simple case, already have the full-name
+ * Nearly always shorter, so try first time. */
+- l = *fnamelen;
+ if (get_short_pathname(fnamep, bufp, &l) == FAIL)
+ return -1;
+
+ if (l == 0)
+ {
+! /* Couldn't find the filename.. search the paths.
+! */
+ l = *fnamelen;
+ if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
+ return -1;
+--- 23406,23421 ----
+ }
+ else
+ {
+! int l = *fnamelen;
+
+! /* Simple case, already have the full-name.
+ * Nearly always shorter, so try first time. */
+ if (get_short_pathname(fnamep, bufp, &l) == FAIL)
+ return -1;
+
+ if (l == 0)
+ {
+! /* Couldn't find the filename, search the paths. */
+ l = *fnamelen;
+ if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
+ return -1;
+*** ../vim-7.3.280/src/version.c 2011-08-10 18:36:49.000000000 +0200
+--- src/version.c 2011-08-17 15:21:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 281,
+ /**/
+
+--
+Kisses may last for as much as, but no more than, five minutes.
+ [real standing law in Iowa, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///