summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/pkgrecords.cc8
-rw-r--r--debian/changelog2
2 files changed, 8 insertions, 2 deletions
diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc
index 69aac6622..a7dec76a7 100644
--- a/apt-pkg/pkgrecords.cc
+++ b/apt-pkg/pkgrecords.cc
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: pkgrecords.cc,v 1.6 2001/02/20 07:03:17 jgg Exp $
+// $Id: pkgrecords.cc,v 1.7 2003/09/02 04:46:18 mdz Exp $
/* ######################################################################
Package Records - Allows access to complete package description records
@@ -42,6 +42,10 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
if (Files[I->ID] == 0)
return;
}
+
+ // We store this to make sure that the destructor won't segfault,
+ // even if the Cache object was destructed before this instance.
+ PackageFileCount = Cache.HeaderP->PackageFileCount;
}
/*}}}*/
// Records::~pkgRecords - Destructor /*{{{*/
@@ -49,7 +53,7 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
/* */
pkgRecords::~pkgRecords()
{
- for (unsigned I = 0; I != Cache.HeaderP->PackageFileCount; I++)
+ for (unsigned I = 0; I != PackageFileCount; I++)
delete Files[I];
delete [] Files;
}
diff --git a/debian/changelog b/debian/changelog
index b3998e196..1c37b8142 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ apt (0.5.11) unstable; urgency=low
(Closes: #208302)
* In apt.conf(5), give the fully qualified name of Dir::Bin::Methods,
rather than just "methods"
+ * Small bugfix to pkgRecords to prevent a segfault if the pkgCache is
+ destroyed before it (from Conectiva's apt-rpm)
--