From afbf38289001f7d0665b02264ec93046c91cae1e Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Aug 29 2011 11:45:23 +0000 Subject: - patchlevel 281 --- diff --git a/7.3.281 b/7.3.281 new file mode 100644 index 0000000..f90e95e --- /dev/null +++ b/7.3.281 @@ -0,0 +1,134 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.281 +Fcc: outbox +From: Bram Moolenaar +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 ///