make sure we don't see REPOKEY_TYPE_REL_IDARRAY outside of a stored solv file
authorMichael Schroeder <mls@suse.de>
Fri, 21 Jun 2013 15:43:42 +0000 (17:43 +0200)
committerMichael Schroeder <mls@suse.de>
Fri, 21 Jun 2013 15:43:42 +0000 (17:43 +0200)
src/repo_solv.c
src/repodata.c

index 2835c30..0eedc18 100644 (file)
@@ -1292,6 +1292,11 @@ printf("=> %s %s %p\n", pool_id2str(pool, keys[key].name), pool_id2str(pool, key
     }
   solv_free(idmap);
 
+  /* fixup the special idarray type */
+  for (i = 1; i < numkeys; i++)
+    if (keys[i].type == REPOKEY_TYPE_REL_IDARRAY)
+      keys[i].type = REPOKEY_TYPE_IDARRAY;
+
   for (i = 1; i < numkeys; i++)
     if (keys[i].storage == KEY_STORAGE_VERTICAL_OFFSET)
       break;
index 6a5d84b..a61b80b 100644 (file)
@@ -757,7 +757,7 @@ repodata_lookup_idarray(Repodata *data, Id solvid, Id keyname, Queue *q)
   dp = find_key_data(data, solvid, keyname, &key);
   if (!dp)
     return 0;
-  if (key->type != REPOKEY_TYPE_IDARRAY && key->type != REPOKEY_TYPE_REL_IDARRAY)
+  if (key->type != REPOKEY_TYPE_IDARRAY)
     return 0;
   for (;;)
     {