diff options
author | Michael Vogt <egon@bottom> | 2007-06-10 23:55:03 +0200 |
---|---|---|
committer | Michael Vogt <egon@bottom> | 2007-06-10 23:55:03 +0200 |
commit | 3025794355fa84971e8d5d4f9e499258f769b127 (patch) | |
tree | 1d955281360aae977f027b17ced706ae0d19f890 /apt-pkg | |
parent | f32484472374cb6c93fef0cd4ee9f71a7b80ec8a (diff) | |
parent | 47026cdea6ba7d145922ce21d5ec478598126b8d (diff) |
* apt-pkg/pkgrecords.cc,h:
- merge fix in destructor code
Diffstat (limited to 'apt-pkg')
-rw-r--r-- | apt-pkg/pkgrecords.cc | 27 | ||||
-rw-r--r-- | apt-pkg/pkgrecords.h | 5 |
2 files changed, 17 insertions, 15 deletions
diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc index 0aaa2096a..e506de73a 100644 --- a/apt-pkg/pkgrecords.cc +++ b/apt-pkg/pkgrecords.cc @@ -20,25 +20,23 @@ // Records::pkgRecords - Constructor /*{{{*/ // --------------------------------------------------------------------- /* This will create the necessary structures to access the status files */ -pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0) +pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), + Files(Cache.HeaderP->PackageFileCount) { - Files = new Parser *[Cache.HeaderP->PackageFileCount]; - memset(Files,0,sizeof(*Files)*Cache.HeaderP->PackageFileCount); - - for (pkgCache::PkgFileIterator I = Cache.FileBegin(); - I.end() == false; I++) + for (pkgCache::PkgFileIterator I = Cache.FileBegin(); + I.end() == false; I++) { const pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(I.IndexType()); if (Type == 0) { - _error->Error(_("Index file type '%s' is not supported"),I.IndexType()); - return; + _error->Error(_("Index file type '%s' is not supported"),I.IndexType()); + return; } Files[I->ID] = Type->CreatePkgParser(I); if (Files[I->ID] == 0) - return; - } + return; + } } /*}}}*/ // Records::~pkgRecords - Destructor /*{{{*/ @@ -46,9 +44,12 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0) /* */ pkgRecords::~pkgRecords() { - for (unsigned I = 0; I != Cache.HeaderP->PackageFileCount; I++) - delete Files[I]; - delete [] Files; + for ( vector<Parser*>::iterator it = Files.begin(); + it != Files.end(); + ++it) + { + delete *it; + } } /*}}}*/ // Records::Lookup - Get a parser for the package version file /*{{{*/ diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h index ea1a23fc4..7b9f51a50 100644 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@ -20,6 +20,7 @@ #include <apt-pkg/pkgcache.h> #include <apt-pkg/fileutl.h> +#include <vector> class pkgRecords { @@ -29,8 +30,8 @@ class pkgRecords private: pkgCache &Cache; - Parser **Files; - + std::vector<Parser *>Files; + public: // Lookup function |