summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2011-07-29 13:37:33 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2011-07-29 13:37:33 +0200
commit64dda04bd949ab73ca77732fcc5149cc7c2a5557 (patch)
tree981c362daf280297ce2b3c3e6651f16fdfa0e9b8 /apt-pkg
parent2ec858bc68bc2d79ec020fe24be2d76b7c5b6792 (diff)
* 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)
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/pkgcachegen.cc5
-rw-r--r--apt-pkg/pkgcachegen.h2
2 files changed, 5 insertions, 2 deletions
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
index d0ea2e6e3..ebcbfdd25 100644
--- a/apt-pkg/pkgcachegen.cc
+++ b/apt-pkg/pkgcachegen.cc
@@ -105,6 +105,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;
@@ -684,7 +687,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);