]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
also check repodata in fileconflicts precheck code
authorMichael Schroeder <mls@suse.de>
Mon, 15 Apr 2013 12:11:31 +0000 (14:11 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 15 Apr 2013 12:11:31 +0000 (14:11 +0200)
ext/pool_fileconflicts.c

index ca70dbb154c4715dd70ca195e43c7599cdb55459..bfd07ef639bb65470b88f97f1d877dc33715c31b 100644 (file)
@@ -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);