diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2012-10-15 16:00:44 +0200 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2012-10-15 16:00:44 +0200 |
commit | 27cae7715489c13c504590cf77a6d22680dbe0b1 (patch) | |
tree | 7d5b13103d19917101f67ed41c8264de440dd726 /apt-pkg/pkgcachegen.cc | |
parent | 5caefc9115860e1bc1fdff8971a9e45f96a1c4e5 (diff) |
* apt-pkg/pkgcachegen.cc:
- Fix crash if the cache is remapped while writing a Provides version
(LP: #1066445).
Diffstat (limited to 'apt-pkg/pkgcachegen.cc')
-rw-r--r-- | apt-pkg/pkgcachegen.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 739b538c6..373f6625c 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -975,8 +975,12 @@ bool pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator &Ver, Prv->Version = Ver.Index(); Prv->NextPkgProv = Ver->ProvidesList; Ver->ProvidesList = Prv.Index(); - if (Version.empty() == false && unlikely((Prv->ProvideVersion = WriteString(Version)) == 0)) - return false; + if (Version.empty() == false) { + map_ptrloc const idxProvideVersion = WriteString(Version); + Prv->ProvideVersion = idxProvideVersion; + if (unlikely(idxProvideVersion == 0)) + return false; + } // Locate the target package pkgCache::PkgIterator Pkg; |