From: Michael Schroeder Date: Mon, 19 Mar 2012 13:36:47 +0000 (+0100) Subject: cleanup rpmdb copy code now that we can do rels in incore idarrays X-Git-Tag: BASE-SuSE-Code-12_2-Branch~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2db355b2a04d910aff4d1234517dfc48d3d809d6;p=thirdparty%2Flibsolv.git cleanup rpmdb copy code now that we can do rels in incore idarrays --- diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c index 27bf71a5..84bb6f01 100644 --- a/ext/repo_rpmdb.c +++ b/ext/repo_rpmdb.c @@ -1083,12 +1083,13 @@ solvable_copy_cb(void *vcbdata, Solvable *r, Repodata *fromdata, Repokey *key, K Stringpool *fromspool = fromdata->localpool ? &fromdata->spool : &frompool->ss; keyname = key->name; - if (keyname >= ID_NUM_INTERNAL) + if (keyname >= ID_NUM_INTERNAL && pool != frompool) keyname = pool_str2id(pool, pool_id2str(frompool, keyname), 1); switch(key->type) { case REPOKEY_TYPE_ID: case REPOKEY_TYPE_CONSTANTID: + case REPOKEY_TYPE_IDARRAY: /* used for triggers */ id = kv->id; assert(!data->localpool); /* implement me! */ if (pool != frompool || fromdata->localpool) @@ -1100,8 +1101,10 @@ solvable_copy_cb(void *vcbdata, Solvable *r, Repodata *fromdata, Repokey *key, K } if (key->type == REPOKEY_TYPE_ID) repodata_set_id(data, handle, keyname, id); - else + else if (key->type == REPOKEY_TYPE_CONSTANTID) repodata_set_constantid(data, handle, keyname, id); + else + repodata_add_idarray(data, handle, keyname, id); break; case REPOKEY_TYPE_STR: repodata_set_str(data, handle, keyname, kv->str); @@ -1127,15 +1130,6 @@ solvable_copy_cb(void *vcbdata, Solvable *r, Repodata *fromdata, Repokey *key, K id = copydir(pool, data, fromspool, fromdata, id, cbdata->dircache); repodata_add_dirstr(data, handle, keyname, id, kv->str); break; - case REPOKEY_TYPE_IDARRAY: /* used for triggers */ - id = kv->id; - assert(!data->localpool); /* implement me! */ - if (ISRELDEP(id)) - break; /* can't do those at the moment */ - if (pool != frompool || fromdata->localpool) - id = pool_str2id(pool, stringpool_id2str(fromspool, id), 1); - repodata_add_idarray(data, handle, keyname, id); - break; default: break; }