diff options
Diffstat (limited to 'data/vim/patches/8.1.0133')
-rw-r--r-- | data/vim/patches/8.1.0133 | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0133 b/data/vim/patches/8.1.0133 new file mode 100644 index 000000000..b1f6d2253 --- /dev/null +++ b/data/vim/patches/8.1.0133 @@ -0,0 +1,141 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0133 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0133 +Problem: tagfiles() can have duplicate entries. +Solution: Simplify the filename to make checking for duplicates work better. + Add a test. (Dominique Pelle, closes #2979) +Files: src/tag.c, src/testdir/test_taglist.vim + + +*** ../vim-8.1.0132/src/tag.c 2018-04-27 22:44:39.000000000 +0200 +--- src/tag.c 2018-06-30 22:40:27.157629813 +0200 +*************** +*** 2595,2601 **** + } + + static garray_T tag_fnames = GA_EMPTY; +- static void found_tagfile_cb(char_u *fname, void *cookie); + + /* + * Callback function for finding all "tags" and "tags-??" files in +--- 2595,2600 ---- +*************** +*** 2605,2612 **** + found_tagfile_cb(char_u *fname, void *cookie UNUSED) + { + if (ga_grow(&tag_fnames, 1) == OK) +! ((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] = +! vim_strsave(fname); + } + + #if defined(EXITFREE) || defined(PROTO) +--- 2604,2618 ---- + found_tagfile_cb(char_u *fname, void *cookie UNUSED) + { + if (ga_grow(&tag_fnames, 1) == OK) +! { +! char_u *tag_fname = vim_strsave(fname); +! +! #ifdef BACKSLASH_IN_FILENAME +! slash_adjust(tag_fname); +! #endif +! simplify_filename(tag_fname); +! ((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] = tag_fname; +! } + } + + #if defined(EXITFREE) || defined(PROTO) +*************** +*** 2638,2643 **** +--- 2644,2650 ---- + { + char_u *fname = NULL; + char_u *r_ptr; ++ int i; + + if (first) + vim_memset(tnp, 0, sizeof(tagname_T)); +*************** +*** 2679,2684 **** +--- 2686,2699 ---- + ++tnp->tn_hf_idx; + STRCPY(buf, p_hf); + STRCPY(gettail(buf), "tags"); ++ #ifdef BACKSLASH_IN_FILENAME ++ slash_adjust(buf); ++ #endif ++ simplify_filename(buf); ++ ++ for (i = 0; i < tag_fnames.ga_len; ++i) ++ if (STRCMP(buf, ((char_u **)(tag_fnames.ga_data))[i]) == 0) ++ return FAIL; // avoid duplicate file names + } + else + vim_strncpy(buf, ((char_u **)(tag_fnames.ga_data))[ +*** ../vim-8.1.0132/src/testdir/test_taglist.vim 2018-02-09 18:25:21.000000000 +0100 +--- src/testdir/test_taglist.vim 2018-06-30 22:33:05.044664951 +0200 +*************** +*** 1,4 **** +! " test 'taglist' function and :tags command + + func Test_taglist() + call writefile([ +--- 1,4 ---- +! " test taglist(), tagfiles() functions and :tags command + + func Test_taglist() + call writefile([ +*************** +*** 61,63 **** +--- 61,86 ---- + call assert_fails('tag ' . repeat('x', 1020), 'E426') + tags + endfunc ++ ++ func Test_tagfiles() ++ call assert_equal([], tagfiles()) ++ ++ call writefile(["FFoo\tXfoo\t1"], 'Xtags1') ++ call writefile(["FBar\tXbar\t1"], 'Xtags2') ++ set tags=Xtags1,Xtags2 ++ call assert_equal(['Xtags1', 'Xtags2'], tagfiles()) ++ ++ help ++ let tf = tagfiles() ++ call assert_equal(1, len(tf)) ++ call assert_equal(fnamemodify(expand('$VIMRUNTIME/doc/tags'), ':p:gs?\\?/?'), ++ \ fnamemodify(tf[0], ':p:gs?\\?/?')) ++ helpclose ++ call assert_equal(['Xtags1', 'Xtags2'], tagfiles()) ++ set tags& ++ call assert_equal([], tagfiles()) ++ ++ call delete('Xtags1') ++ call delete('Xtags2') ++ bd ++ endfunc +*** ../vim-8.1.0132/src/version.c 2018-06-30 21:50:16.856674912 +0200 +--- src/version.c 2018-06-30 22:33:36.756434678 +0200 +*************** +*** 791,792 **** +--- 791,794 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 133, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +158. You get a tuner card so you can watch TV while surfing. + + /// 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 /// |