]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/pkgrecords.cc
apt-pkg/acquire-item.cc: fix breaking on unreachable networks
[apt.git] / apt-pkg / pkgrecords.cc
index f62f945b5b03cb8c14e9072bb6901498ca37ef91..e506de73a63863a6e2d60e1737be8249d29f8198 100644 (file)
@@ -9,9 +9,6 @@
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/pkgrecords.h"
-#endif
 #include <apt-pkg/pkgrecords.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/pkgrecords.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/error.h>
 // Records::pkgRecords - Constructor                                   /*{{{*/
 // ---------------------------------------------------------------------
 /* This will create the necessary structures to access the status files */
 // 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)
       {
    {
       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)
       }
 
       Files[I->ID] = Type->CreatePkgParser(I);
       if (Files[I->ID] == 0)
-        return;
-   }   
-   // We store that to make sure that the destructor won't segfault,
-   // even if the Cache object was destructed before this instance.
-   PackageFileCount = Cache.HeaderP->PackageFileCount;
+         return;
+   }
 }
                                                                        /*}}}*/
 // Records::~pkgRecords - Destructor                                   /*{{{*/
 }
                                                                        /*}}}*/
 // Records::~pkgRecords - Destructor                                   /*{{{*/
@@ -52,9 +44,12 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
 /* */
 pkgRecords::~pkgRecords()
 {
 /* */
 pkgRecords::~pkgRecords()
 {
-   for (unsigned I = 0; I != 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         /*{{{*/
 }
                                                                        /*}}}*/
 // Records::Lookup - Get a parser for the package version file         /*{{{*/