diff options
-rw-r--r-- | apt-pkg/pkgcachegen.cc | 5 | ||||
-rw-r--r-- | apt-pkg/pkgcachegen.h | 2 | ||||
-rw-r--r-- | debian/changelog | 4 |
3 files changed, 9 insertions, 2 deletions
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 24e95f2f2..2b6d294fb 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -106,6 +106,9 @@ void pkgCacheGenerator::ReMap(void const * const oldMap, void const * const newM if (oldMap == newMap) return; + if (_config->FindB("Debug::pkgCacheGen", false)) + std::clog << "Remaping from " << oldMap << " to " << newMap << std::endl; + Cache.ReMap(false); CurrentFile += (pkgCache::PackageFile*) newMap - (pkgCache::PackageFile*) oldMap; @@ -685,7 +688,7 @@ bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg, string const &Version, unsigned int const &Op, unsigned int const &Type, - map_ptrloc *OldDepLast) + map_ptrloc* &OldDepLast) { void const * const oldMap = Map.Data(); // Get a structure diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h index ff198833a..c26051182 100644 --- a/apt-pkg/pkgcachegen.h +++ b/apt-pkg/pkgcachegen.h @@ -75,7 +75,7 @@ class pkgCacheGenerator /*{{{*/ bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List); bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver, string const &Version, unsigned int const &Op, - unsigned int const &Type, map_ptrloc *OldDepLast); + unsigned int const &Type, map_ptrloc* &OldDepLast); unsigned long NewVersion(pkgCache::VerIterator &Ver,const string &VerStr,unsigned long Next); map_ptrloc NewDescription(pkgCache::DescIterator &Desc,const string &Lang,const MD5SumValue &md5sum,map_ptrloc Next); diff --git a/debian/changelog b/debian/changelog index 339b92c79..05502a92a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,10 @@ apt (0.8.16~exp5) UNRELEASED; urgency=low * apt-pkg/makefile: - install sha256.h compat header + * apt-pkg/pkgcachegen.{cc,h}: + - use ref-to-ptr semantic in NewDepends() to ensure that the + libapt does not segfault if the cache is remapped in between + (LP: #812862) -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 29 Jul 2011 13:44:01 +0200 |