Fix merge_attrs, so that not (e.g.) two medianr attributes show up in
authorMichael Matz <matz@suse.de>
Wed, 6 Feb 2008 20:13:36 +0000 (20:13 +0000)
committerMichael Matz <matz@suse.de>
Wed, 6 Feb 2008 20:13:36 +0000 (20:13 +0000)
susetags converted solvables using =Shr .

src/repodata.c

index 69a99ca..a777bb6 100644 (file)
@@ -556,12 +556,17 @@ repodata_insert_keyid(Repodata *data, Id entry, Id keyid, Id val, int overwrite)
   if (data->attrs[entry])
     {
       for (pp = data->attrs[entry]; *pp; pp += 2)
-        if (*pp == keyid)
+       /* Determine equality based on the name only, allows us to change
+          type (when overwrite is set), and makes TYPE_CONSTANT work.  */
+        if (data->keys[*pp].name == data->keys[keyid].name)
           break;
       if (*pp)
         {
          if (overwrite)
-            pp[1] = val;
+           {
+             pp[0] = keyid;
+              pp[1] = val;
+           }
           return;
         }
       i = pp - data->attrs[entry];