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)