Author: mlschroe Date: Fri Mar 7 15:31:43 2008 New Revision: 9050 URL: http://svn.opensuse.org/viewcvs/zypp?rev=9050&view=rev Log: - handle the poolusage=3, dirpoolusage=2 case a bit better Modified: trunk/sat-solver/tools/repo_write.c Modified: trunk/sat-solver/tools/repo_write.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/tools/repo_write.c?rev=9050&r1=9049&r2=9050&view=diff ============================================================================== --- trunk/sat-solver/tools/repo_write.c (original) +++ trunk/sat-solver/tools/repo_write.c Fri Mar 7 15:31:43 2008 @@ -845,7 +845,7 @@ int poolusage, dirpoolusage, idused, dirused; int reloff; - Repodata *data; + Repodata *data, *dirpooldata = 0; Stringpool ownspool, *spool; Dirpool owndirpool, *dirpool; @@ -1051,6 +1051,7 @@ { dirpoolusage = 2; dirpool = &data->dirpool; + dirpooldata = data; } } } @@ -1071,8 +1072,6 @@ else stringpool_init_empty(spool); cbdata.ownspool = spool; - if (dirpoolusage) - dirpoolusage = 3; /* hmm, maybe not needed */ } else if (poolusage == 0 || poolusage == 1) { @@ -1082,6 +1081,7 @@ if (dirpoolusage == 3) { dirpool = &owndirpool; + dirpooldata = 0; dirpool_create(dirpool); cbdata.owndirpool = dirpool; } @@ -1215,8 +1215,6 @@ n++; } - reloff = needid[0].map; - /* If we have fileinfos to write, setup schemas and increment needid[] of the right strings. */ for (i = 0; i < nsubfiles; i++) @@ -1320,10 +1318,18 @@ continue; if (cbdata.dirused && !cbdata.dirused[i]) continue; + if (cbdata.ownspool && dirpooldata && id > 1) + { + id = putinownpool(&cbdata, dirpooldata->localpool ? &dirpooldata->spool : &pool->ss, id); + needid = cbdata.needid; + } needid[id].need++; } } + reloff = needid[0].map; + + /********************************************************************/ /* @@ -1397,7 +1403,10 @@ if (dirmap[i] <= 0) continue; cbdata.dirused[dirmap[i]] = i; - dirmap[i] = needid[dirpool->dirs[dirmap[i]]].need; + id = dirpool->dirs[dirmap[i]]; + if (cbdata.ownspool && dirpooldata && id > 1) + id = putinownpool(&cbdata, dirpooldata->localpool ? &dirpooldata->spool : &pool->ss, id); + dirmap[i] = needid[id].need; } } -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org