Mercurial > vim
diff src/tag.c @ 2185:0c1e413c32f1 v7.2.443
updated for version 7.2.443
Problem: Using taglist() on a tag file with duplicate fields generates an
internal error. (Peter Odding)
Solution: Check for duplicate field names.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sat, 12 Jun 2010 20:12:02 +0200 |
parents | 3112fcc89238 |
children | ccda151dde4e |
line wrap: on
line diff
--- a/src/tag.c +++ b/src/tag.c @@ -3771,7 +3771,8 @@ expand_tags(tagnames, pat, num_file, fil static int add_tag_field __ARGS((dict_T *dict, char *field_name, char_u *start, char_u *end)); /* - * Add a tag field to the dictionary "dict" + * Add a tag field to the dictionary "dict". + * Return OK or FAIL. */ static int add_tag_field(dict, field_name, start, end) @@ -3783,6 +3784,17 @@ add_tag_field(dict, field_name, start, e char_u buf[MAXPATHL]; int len = 0; + /* check that the field name doesn't exist yet */ + if (dict_find(dict, (char_u *)field_name, -1) != NULL) + { + if (p_verbose > 0) + { + verbose_enter(); + smsg((char_u *)_("Duplicate field name: %s"), field_name); + verbose_leave(); + } + return FAIL; + } if (start != NULL) { if (end == NULL)