From: Michael Schroeder Date: Mon, 15 Apr 2013 12:11:31 +0000 (+0200) Subject: also check repodata in fileconflicts precheck code X-Git-Tag: BASE-SuSE-Code-12_3-Branch~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97c5738b5a8c038cf1b893d4509c5da0c62e99f6;p=thirdparty%2Flibsolv.git also check repodata in fileconflicts precheck code --- diff --git a/ext/pool_fileconflicts.c b/ext/pool_fileconflicts.c index ca70dbb1..bfd07ef6 100644 --- a/ext/pool_fileconflicts.c +++ b/ext/pool_fileconflicts.c @@ -743,6 +743,7 @@ precheck_solvable_files(struct cbdata *cbdata, Pool *pool, Id p) Hashval lastdirhash = 0; int lastdirlen = 0; int checkthisdir = 0; + Repodata *lastrepodata = 0; dataiterator_init(&di, pool, 0, p, SOLVABLE_FILELIST, 0, SEARCH_COMPLETE_FILELIST); while (dataiterator_step(&di)) @@ -757,11 +758,12 @@ precheck_solvable_files(struct cbdata *cbdata, Pool *pool, Id p) else { /* hash the full path */ - if (di.kv.id != lastdirid) + if (di.data != lastrepodata || di.kv.id != lastdirid) { const char *dir; + lastrepodata = di.data; lastdirid = di.kv.id; - dir = repodata_dir2str(di.data, lastdirid, ""); + dir = repodata_dir2str(lastrepodata, lastdirid, ""); lastdirlen = strlen(dir); lastdirhash = strhash(dir); checkthisdir = isindirmap(cbdata, lastdirhash ? lastdirhash : lastdirlen + 1);