X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/803fafcbaa2fe4e1c49249e589d50f892b1b2424..c1e78ee5a2697afc0902d1be294d71de93090909:/apt-pkg/pkgcachegen.cc?ds=sidebyside diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index fd4f8965b..804c59a48 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: pkgcachegen.cc,v 1.37 1999/04/19 02:35:38 jgg Exp $ +// $Id: pkgcachegen.cc,v 1.39 1999/06/04 05:54:20 jgg Exp $ /* ###################################################################### Package Cache Generator - Generator for the cache structure. @@ -111,20 +111,34 @@ bool pkgCacheGenerator::MergeList(ListParser &List) /* We already have a version for this item, record that we saw it */ - if (Res == 0) + unsigned long Hash = List.VersionHash(); + if (Res == 0 && Ver->Hash == Hash) { if (List.UsePackage(Pkg,Ver) == false) return _error->Error("Error occured while processing %s (UsePackage2)",PackageName.c_str()); - + if (NewFileVer(Ver,List) == false) return _error->Error("Error occured while processing %s (NewFileVer1)",PackageName.c_str()); continue; } + // Skip to the end of the same version set. + if (Res == 0) + { + for (; Ver.end() == false; Last = &Ver->NextVer, Ver++) + { + Res = pkgVersionCompare(Version.begin(),Version.end(),Ver.VerStr(), + Ver.VerStr() + strlen(Ver.VerStr())); + if (Res != 0) + break; + } + } + // Add a new version *Last = NewVersion(Ver,Version,*Last); Ver->ParentPkg = Pkg.Index(); + Ver->Hash = Hash; if (List.NewVersion(Ver) == false) return _error->Error("Error occured while processing %s (NewVersion1)",PackageName.c_str());